小编典典

绑定到静态属性

all

我很难将简单的静态字符串属性绑定到 TextBox。

这是具有静态属性的类:

public class VersionManager
{
    private static string filterString;

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

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

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

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

无法将属性“Source”中的值转换为“System.Windows.Markup.StaticExtension”类型的对象。标记文件“BurnDisk;component/selectversionpagefunction.xaml”第
57 行位置 29 中的对象“System.Windows.Data.Binding”出错。

知道我做错了什么吗?


阅读 62

收藏
2022-07-17

共1个答案

小编典典

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

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

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

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