Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
C# 如何将xaml属性绑定到另一个类中的静态变量?_C#_Wpf_Xaml - Fatal编程技术网

C# 如何将xaml属性绑定到另一个类中的静态变量?

C# 如何将xaml属性绑定到另一个类中的静态变量?,c#,wpf,xaml,C#,Wpf,Xaml,我有一个xaml文件,其中我尝试将文本块背景绑定到另一个类中的静态变量,如何实现这一点 我知道这可能是愚蠢的,但我只是从胜利的形式和感觉有点失落 我的意思是: <TextBlock Text="some text" TextWrapping="WrapWithOverflow" Background="{Binding Path=SomeVariable}" /> 首先,您不能绑定到变量。您只能从XAML绑定到属性。 对于绑定到静态属性,

我有一个xaml文件,其中我尝试将文本块背景绑定到另一个类中的静态变量,如何实现这一点

我知道这可能是愚蠢的,但我只是从胜利的形式和感觉有点失落

我的意思是:

<TextBlock Text="some text"
           TextWrapping="WrapWithOverflow"
           Background="{Binding Path=SomeVariable}" />

首先,您不能绑定到
变量。您只能从XAML绑定到
属性。
对于绑定到静态属性,您可以用这种方式(假设您想要绑定
TextBlock
Text
属性)-


您实际上无法绑定到静态属性(INotifyPropertyChanged仅在实例上有意义),所以这就足够了

{x:Static my:MyTestStaticClass.MyProperty}  
或例如

<TextBox Text="{x:Static my:MyTestStaticClass.MyProperty}" Width="500" Height="100" />  
…当然,如果要从代码中设置绑定,请删除XAML中的任何绑定

OneWay
(从源更改属性):
如果您需要更新源属性更改的目标(即控件的属性,在本例中为Window.Left),则静态类无法实现这一点(根据我上面的评论,您需要实现
INotifyPropertyChanged
,这样您就可以使用包装类,实现
INotifyPropertyChanged
,并将其连接到您感兴趣的静态属性(如果您知道如何跟踪静态属性的更改,即从现在起这更像是一个“设计”问题,我建议重新设计并将其全部放在一个“非静态”类中)。

您可以使用较新的
x:Bind
来完成此操作,只需使用:

<TextBlock Text="{x:Bind YourClassName.PropertyName}"/>


检查您的
输出
窗口。那里可能有一些绑定问题日志。您是否制作了变量
属性
?啊哈,这是一个转换器问题,它告诉我,我不能为画笔分配颜色,应该在普通c代码中使用转换器,我们以前用它来执行类似于textblock的操作。BackGround=新SolidColorBrush(GivenColor);但仍然丢失,也不知道如何实现!从转换器返回画笔-
返回新的SolidColorBrush(值为颜色)
这正是我想要的。谢谢。@jbyrd您想从静态属性绑定到控件,还是从静态属性绑定到静态属性,还是双向绑定?@NSGaga-从控件绑定到静态属性。这应该是公认的答案,而不是@RohitVatsx的答案:绑定在WPF中不可用,这就是您所说的UWP
<TextBox Text="{x:Static my:MyTestStaticClass.MyProperty}" Width="500" Height="100" />  
Binding binding = new Binding();
//binding.Source = typeof(MyStaticClass);
// System.InvalidOperationException: 'Binding.StaticSource cannot be set while using Binding.Source.'
binding.Path = new PropertyPath(typeof(MyStaticClass).GetProperty(nameof(MyStaticClass.Left)));
binding.Mode = BindingMode.TwoWay;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
this.SetBinding(Window.LeftProperty, binding);
<TextBlock Text="{x:Bind YourClassName.PropertyName}"/>