Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据绑定到WPF中的静态属性_Wpf_Data Binding_Static - Fatal编程技术网

数据绑定到WPF中的静态属性

数据绑定到WPF中的静态属性,wpf,data-binding,static,Wpf,Data Binding,Static,我有一个名为StockItem的类。 该类包含一些实例属性,包括数量。 该类包含一些静态属性,包括Cart和CartTotalPrice。 购物车类型为ObservableCollection。 CartTotalPrice返回购物车总价 我创建了一个名为UCOrder的UserControl,允许用户将项目添加到购物车中。 我创建了另一个UserControl,允许用户更改购物车项目的数量 我在UCOrder的标记中声明了一个文本块。 我想将TextBlock绑定到静态属性StockItem.

我有一个名为StockItem的类。
该类包含一些实例属性,包括数量。
该类包含一些静态属性,包括Cart和CartTotalPrice。
购物车类型为ObservableCollection。
CartTotalPrice返回购物车总价

我创建了一个名为UCOrder的UserControl,允许用户将项目添加到购物车中。
我创建了另一个UserControl,允许用户更改购物车项目的数量

我在UCOrder的标记中声明了一个文本块。
我想将TextBlock绑定到静态属性StockItem.CartTotalPrice,以便TextBlock显示当前的CartTotalPrice。
我怎么做

任何帮助都将不胜感激


<TextBlock Text="{Binding Source={x:Static StockItem.CartTotalPrice}}"/>
一开始可能看起来很奇怪,但是
Source
告诉我们哪个是绑定的实际源,通常是
DataContext
,但是我们将其设置为使用静态属性。对于path,我们现在可以在源对象上提供一个属性,但是因为我们在源中已经有了我们想要的东西,所以我们不设置默认的path,即“直接获取源”


但是请注意你问题下面的评论。虽然我刚才回答了你的问题,我也认为这样做是个坏主意,因为已经提到的原因。

我不明白CartTotalPrice和CART是如何静态的。如果是,则意味着所有StockItem对象都与相同的唯一购物车相关联。你能发布这两个类的代码吗?创建一个非静态可观察属性,该属性在内部使用静态属性并绑定到该属性;话虽如此,正如Marshall777所指出的,statis属性通常是个坏主意。@stijn如何创建可观察属性?我知道Cart和CartTotalPrice不应该是静态属性,但我正在创建一个测试应用程序。如您所述,我已更改了TextBlock的声明,但TextBlock不会自动刷新。例如,用户向购物车添加物品后,文本块不会刷新。当然不会,这就是为什么我们都说这不是一个好主意。要更新它,您需要实现INotifyPropertyChanged并引发每个属性更改。但这不适用于静态属性。另一个选项是通过手动拉取更改。