【问题标题】:Binding to static properties in static class fails绑定到静态类中的静态属性失败
【发布时间】:2015-10-11 13:55:03
【问题描述】:

我的公共静态类 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;
    }

我可以轻松地绑定到属性并在我的视图模型类中/从我的视图模型类中使用它们,但是在拥有这个视图模型类时,我还想读取一些图像路径/字体类型等。来自我的 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 并阅读了有关该主题的所有问题,互联网上的其他所有人都建议使用上面的代码进行静态链接,但它不起作用。我得到一个例外:

抛出异常:“System.Windows.Markup.XamlParseException”在 PresentationFramework.dll

附加信息:'设置属性 'System.Windows.Data.Binding.Path' 引发了异常。电话号码 '39' 和行位置 '31'。

我已经尝试解决了几个小时,非常感谢任何帮助/建议。

【问题讨论】:

  • 而不是Path 设置Source
  • 并且它有效.. 我花了几个小时试图找出错误。非常感谢。

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


【解决方案1】:

您需要设置Source 而不是Path

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

Path 在当前绑定上下文中工作,因此您需要更改源

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 2014-01-29
      • 2012-10-15
      • 2013-08-17
      • 2021-08-26
      • 2012-09-10
      • 2010-10-30
      • 2015-10-15
      相关资源
      最近更新 更多