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# - 在 WPF 中的页面之间导航

c# - 通过 .NET 中的某种接口(interface)使属性可用于数据绑定(bind)?

wpf - 一次更新 UserControl 中的所有绑定(bind)

DataGrid 周围的 WPF ScrollViewer 影响列宽

c# - 在 WPF 中加载 BitmapImage 的源代码?

wpf - 将选择设置为 WPF TreeView 中新添加的 Item

c# - 我是否错误地使用了依赖属性?

c# - 使用 MVVM 在 XAML 中禁用 TelerikGrid 中的行

c# - 使用带有 Caliburn micro Message.Attach 的附加事件

data-binding - 如何创建一个可以将 SQLDataReader 和 DBDataRecord 作为参数的函数?