绑定到静态属性我很难将一个简单的静态字符串属性绑定到文本框。下面是具有静态属性的类:public class VersionManager{
private static string filterString;
public static string FilterString
{
get { return filterString; }
set { filterString = value; }
}}在我的XAML中,我只想将这个静态属性绑定到一个文本框:<TextBox>
<TextBox.Text>
<Binding Source="{x:Static local:VersionManager.FilterString}"/>
</TextBox.Text></TextBox>所有东西都会编译,但是在运行时,我得到了以下异常:无法将属性“Source”中的值转换为“System.Windows.Markup.StaticExtenence”类型的对象。在标记文件‘BurnDisk;component/selectversionpagefunction.xaml’第57行第29位的对象‘System.Windows.Data.Binding’处出错。知道我做错什么了吗?
3 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
<Window.Resources> <local:VersionManager x:Key="versionManager"/></Window.Resources>... <TextBox Text="{Binding Source={StaticResource versionManager}, Path=FilterString}"/>
慕勒3428872
TA贡献1848条经验 获得超6个赞
DependencyObject
INotifyPropertyChanged
x:Static
Text
app
<TextBox Text="{x:Static app:VersionManager.FilterString}" />
public class VersionManager : DependencyObject { public static readonly DependencyProperty FilterStringProperty = DependencyProperty.Register( "FilterString", typeof( string ), typeof( VersionManager ), new UIPropertyMetadata( "no version!" ) ); public string FilterString { get { return (string) GetValue( FilterStringProperty ); } set { SetValue( FilterStringProperty, value ); } } public static VersionManager Instance { get; private set; } static VersionManager() { Instance = new VersionManager(); }}
<TextBox Text="{Binding Source={x:Static local:VersionManager.Instance}, Path=FilterString}"/>
九州编程
TA贡献1785条经验 获得超4个赞
可以使用静态属性作为数据绑定的源。如果引发静态事件,数据绑定引擎将识别属性值何时更改。例如,如果类SomeClass定义了一个名为MyProperty的静态属性,SomeClass可以定义一个在MyProperty值更改时引发的静态事件。静态事件可以使用以下任一签名:
public static event EventHandler MyPropertyChanged; public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
注意,在第一个例子中,类公开了一个名为PropertyNameChanged的静态事件,该事件将EventArgs传递给事件处理程序。在第二个例子中,类公开一个名为StaticPropertyChanged的静态事件,该事件将PropertyChangedEventArgs传递给事件处理程序。实现静态属性的类可以选择使用任一方法引发属性更改通知。
添加回答
举报
0/150
提交
取消