繁体   English   中英

如何将简单的静态字符串绑定到WPF标签

[英]How to bind simple static string to WPF Label

我有一个带有公共静态类的C#.NET 4.5 WPF应用程序。 在该类中,我有一个公共静态字符串。 我想要的非常简单,我想将该静态字符串绑定到WPF Label ,因此无论何时更新该字符串,WPF Label也会得到更新。

如何以最简单,最简单的方法实现这一目标

下面的静态类

public static class GlobalStats
{
    private static void updateValues()
    {
        srGlobalStatics="example";   
    }
    public static string srGlobalStatics = "";
}

我希望将WPF标签绑定到特定的srGlobalStatics字符串。

这是我的XAML代码:

<Label Name="lblGlobalStats" Content="lblGlobalStats" HorizontalAlignment="Left"
       Margin="10,36,0,0" VerticalAlignment="Top"/>

这不可能吗?

我可以在MainWindow.xaml.cs中编写一个函数,但是我不想在其中尽可能多地放入不必要的代码。

回答您的第一篇文章:

 <Label Name="lblGlobalStats" 
 Content="{Binding Source={x:Static wpfApplication1:GlobalStats.srGlobalStatics}}" 
 HorizontalAlignment="Left" Margin="10,36,0,0" VerticalAlignment="Top"/>

对于您的第二个问题(在注释中提出),假设您希望所有这些问题都是静态的(尽管如此丑陋):

public static void updateValues()
{
    srGlobalStatics[0] = "changed";
}

public static ObservableCollection<string> srGlobalStatics = 
   new ObservableCollection<string> { "test" };

WPF:

<Label Name="lblGlobalStats" 
    Content="{Binding Path=[0], Source={x:Static 
    wpfApplication1:GlobalStats.srGlobalStatics}}" 
    HorizontalAlignment="Left" Margin="10,36,0,0" VerticalAlignment="Top"/>

最简单(不一定最好)的方法是将GlobalStats类声明为非静态类,将其设置为DataContext ,最后从XAML源绑定到您的字符串:

public class GlobalStats
{
    private string _myLabel;

    public string MyLabel {
        get { return _myLabel; }
        set { _myLabel = value; }
    }
}

然后,在您的代码隐藏中,执行以下操作:

private GlobalStats_myDataModel = new GlobalStats();

// ...

public MainWindow() {
    // ...
    DataContext = _myDataModel;

最后,您的XAML:

<Label Name="lblGlobalStats" Content="{Binding Path=MyLabel" HorizontalAlignment="Left"
   Margin="10,36,0,0" VerticalAlignment="Top"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM