绑定到静态类中的静态属性失败

时间:2015-10-11 13:55:03

标签: c# .net wpf xaml data-binding

我的公共静态类Config.cs从Config.xml文件中读取值。

public static class Config
{
    public static string ImagePathBrowse { get; private set; }
    public static bool LoadFromXML()
    {
    //sets ImagePathBrowse
}

我有一个登录窗口作为视图类,绑定到登录窗口视图模型:

    public LoginWindow()
    {
        InitializeComponent();
        LoginWindowViewModel VM = new LoginWindowViewModel();
        this.DataContext = VM;
    }

我可以轻松地绑定到属性并在我的视图模型类中使用它们,但是在拥有此视图模型类时,我还想要读取一些图像路径/字体类型e.t.c.来自我的Config课程。我在我的xaml文件中试过这个:

    <Window....
    xmlns:local="clr-namespace:MeineProject"
    .../>

    <Image x:Name="image" Source="{Binding Path={x:Static  local:Config.ImagePathBrowse}}" HorizontalAlignment="Left" Height="50" Margin="145,185,0,0" VerticalAlignment="Top" Width="150"/>

我尝试过Mode = OneWay,因为它是单向绑定,但它也没有用。

我还在学习WPF / MVMM并阅读有关该主题的所有问题,互联网上的其他人都建议使用上面的代码进行静态链接,但它并不起作用。我得到一个例外:

  

抛出异常:&#39; System.Windows.Markup.XamlParseException&#39;在   PresentationFramework.dll

     

其他信息:&#39;设置属性   &#39; System.Windows.Data.Binding.Path&#39;抛出异常。&#39;电话号码   &#39; 39&#39;和行位置&#39; 31&#39;。

我一直试图解决这个问题几个小时,非常感谢任何帮助/建议。

2 个答案:

答案 0 :(得分:0)

您需要设置Source而不是Path

<Image Source="{Binding Source={x:Static local:Config.ImagePathBrowse}}" .../>

Path适用于当前绑定上下文,因此您需要更改源

答案 1 :(得分:0)

从WPF 4.5开始,您还可以使用以下语法绑定到静态属性:

<Image Source="{Binding Path=(local:Config.ImagePathBrowse)}" .../>