我有节点(屏幕上的矩形)以及链接(矩形之间的箭头)。
在数据方面,节点和链路都有各自的数据属性。但是一个链路的坐标等于它的两个组成节点的坐标;即。
理想情况下,每当节点的位置改变时,其所有输入和输出链路的位置也应随之改变。
他们是一个简单的方法(除了下面的)来完成这件事吗?
我的意思是,最终我所需要的只是类似LinkInstance.x1=NodeInstance1.x之类的东西。当然,我可能做错了。如果是的话,请对我大喊大叫。
class Link : ReactiveBase
{
private int x1;
private int y1;
private int x2;
private int y2;
private Node fromNode;
private Node toNode;
//Just copies value, no updates.
public int X1 { get {return this.fromNode.X;} }
public int Y1 { get {return this.fromNode.Y;} }
public int X2 { get {return this.toNode.X;} }
public int Y2 { get {return this.toNode.Y;} }
//Binding to From.X in xaml works; but don't like accessing node from link
public Node From { get { return this.fromNode; } }
//...
public Link(Node from, Node to)
{
this.fromNode = from;
this.toNode = to;
//works; but quite a lot of work
from.PropertyChanged += test;
//...
}
private void test(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "X")
{
this.NotifyPropertyChanged("X1");
}
else if (e.PropertyName == "Y")
{
this.NotifyPropertyChanged("Y1");
}
}
//...
}
我认为这是一个更简单的解决方案:
class Node: ViewModelBase
{
private int _X;
public int X
{
get => _X;
set
{
_X = value;
OnPropertyChanged(new PropertyChangedEventArgs(nameof(X)));
}
}
private int _Y;
public int Y
{
get => _Y;
set
{
_Y = value;
OnPropertyChanged(new PropertyChangedEventArgs(nameof(Y)));
}
}
}
class Link: ViewModelBase
{
public Link(Node from, Node to)
{
FromNode = from;
ToNode = to;
}
private Node _FromNode;
public Node FromNode
{
get => _FromNode;
set
{
_FromNode = value;
OnPropertyChanged(new PropertyChangedEventArgs(nameof(FromNode)));
}
}
private Node _ToNode;
public Node ToNode
{
get => _ToNode;
set
{
_ToNode = value;
OnPropertyChanged(new PropertyChangedEventArgs(nameof(ToNode)));
}
}
}
其中ViewModelBase
是实现InotifyPropertyChanged
接口的基类。您的链接
可以保存一组节点的坐标,而不是保存对节点本身的引用,这样您就不需要处理x
和y
属性更新,因为它们是由节点
本身处理的。
一、概述 在诸葛io中,区别于传统的基于pv、uv等指标的数据统计方法,采用“事件模型”来描述用户在产品上的各种行为。 事件模型又包括了事件和用户(identify)两个实体,您可以根据自己的需求通过接口上传相对应的数据,然后在诸葛io中的各个分析模块多维交叉完成指标查询。同时我们还引进了会话(session)的概念,会话是指用户再一次产品使用中,从开始到结束的过程,用户在互动的过程中会发生一次或
数据模型用于存放,通过页面、JSON 等途径解析出来的数据。 可以在模型属性上使用注解,将数据解析到属性上。 支持模型嵌套、属性数组。 继承 Yurun\Crawler\Module\DataModel\Contract\BaseDataModel 类。 示例 ArticleListItemModel.php: <?php namespace Yurun\CrawlerApp\Module\Yur
放置位置 所有的数据模型文件,都 必须 存放在:app/Models/ 文件夹中。 命名空间: namespace App\Models; User.php Laravel 5.1 默认安装会把 User 模型存放在 app/User.php,必须 移动到 app/Models 文件夹中,并修改命名空间声明为 App/Models,同上。 为了不破坏原有的逻辑点,必须 全局搜索 App/User
Open-Falcon,采用和OpenTSDB相似的数据格式:metric、endpoint加多组key value tags,举两个例子: { metric: load.1min, endpoint: open-falcon-host, tags: srv=falcon,idc=aws-sgp,group=az1, value: 1.5, timestam
在 HBase 中,数据存储在由行列构成的二维表中。这是与一个关系数据库(RDBMS)重叠的术语,但这不是一个有用的类比。相反,将 HBase 表视为多维映射会很有帮助。 HBase 数据模型术语 表 HBase 表由多行组成。 行 HBase 中的一行由一个行键和一个或多个具有与之关联的值的列组成。在行存储时,顺序按照字母进行排序。因此,行键的设计非常重要。其目标是以相关行彼此靠近的方式存储数据
Section Contents 基本内容 标量 容器 方法 指令 结点变量 对象包装 这只是一个介绍性的说明,可以查看 FreeMarker Java API文档 获取更多信息。
正如已经看到的,数据模型的基本结构是树状的。 这棵树可以很复杂,并且可以有很大的深度,比如: (root) | +- animals | | | +- mouse | | | | | +- size = "small" | | | | | +- price = 50 | | | +- elephan
javafx属性是将数据模型连接到javafx gui的好方法,因为它们的绑定模型实现了强大的通知更新机制。 属性和绑定并不严格地与GUI相关,而是对JavaBeans的扩展。 因此,我们希望在应用程序模型类中使用它们,而不引入对包的依赖关系,并且通常来自. 换句话说:(update) 我可能需要将应用程序分成两个模块。 一个模块应该只包含操作数据的类(模型类,说MVC)。 第二个模块将包含所有图