wpf - 绑定(bind)到静态属性

标签 wpf xaml data-binding

我很难将简单的静态字符串属性绑定(bind)到文本框。

这是具有静态属性的类:

public class VersionManager
{
    private static string filterString;

    public static string FilterString
    {
        get { return filterString; }
        set { filterString = value; }
    }
}

在我的 xaml 中,我只想将此静态属性绑定(bind)到 TextBox:

<TextBox>
    <TextBox.Text>
        <Binding Source="{x:Static local:VersionManager.FilterString}"/>
    </TextBox.Text>
</TextBox>

一切都会编译,但在运行时,我收到以下异常:

Cannot convert the value in attribute 'Source' to object of type 'System.Windows.Markup.StaticExtension'. Error at object 'System.Windows.Data.Binding' in markup file 'BurnDisk;component/selectversionpagefunction.xaml' Line 57 Position 29.

知道我做错了什么吗?

最佳答案

如果绑定(bind)需要双向,则必须提供路径。

如果类不是静态的,有一个技巧可以对静态属性进行双向绑定(bind):在资源中声明该类的虚拟实例,并将其用作绑定(bind)的源。

<Window.Resources>
    <local:VersionManager x:Key="versionManager"/>
</Window.Resources>
...

<TextBox Text="{Binding Source={StaticResource versionManager}, Path=FilterString}"/>

关于wpf - 绑定(bind)到静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936304/

相关文章:

c# - PhoneApplicationFrame 自定义没有效果

wpf - 如何获取数据网格列绑定(bind)的字段?

c# - 数据绑定(bind)到 WinForm

WPF:我可以在样式中放置彩色动画吗?

c# - 如何在AppDomain中找到尚未加载的类型?

c# - 为什么 WPF 附带的类具有内部虚拟方法?

c# - XAML:如何将元素绑定(bind)到属性的名称是动态的,在不同的地方可以有不同的名称

c# - 来自 xaml 的 WPF 控件引用在代码端不可见

android - 在android数据绑定(bind)中找不到符号BR

java - Android 中奇怪的数据绑定(bind)