绑定到Static类的Static属性不起作用

时间:2014-08-19 22:00:42

标签: c# wpf binding

我试图Bind Text TextBlock StaticClass.Percent属性LoadingPercent。因为我无法做到(或者我可以吗?)我在ViewModel中定义了<Window x:Class="TestBinding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:testBinding="clr-namespace:TestBinding" Title="MainWindow" Height="350" Width="525"> <Window.DataContext> <testBinding:ViewModel/> </Window.DataContext> <StackPanel> <TextBlock Width="100" HorizontalAlignment="Center" Text="{Binding LoadingPercent}"/> <Button Content="Change" Width="200" Height="30" Margin="0 20 0 0" HorizontalAlignment="Center" Click="ChangeText"/> </StackPanel> </Window> public partial class MainWindow { public MainWindow() { InitializeComponent(); } private void ChangeText(object sender, RoutedEventArgs e) { StaticClass.Percentage = 10; } } public class ViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private double loadingPercent; public double LoadingPercent { get { return StaticClass.Percentage; } set { loadingPercent = value; RaisePropertyChanged("LoadingPercent"); } } private void RaisePropertyChanged(string propertyName) { var handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } } public static class StaticClass { public static int Percentage { get; set; } } 以便我可以绑定它。它仍然无法正常工作。我怎么解决这个问题?或者我可以直接绑定到StaticClass并忽略ViewModel方法吗?

{{1}}

1 个答案:

答案 0 :(得分:2)

这是一个错误:

private double loadingPercent;
public double LoadingPercent
{
    get { return StaticClass.Percentage; }
    set
    {
        loadingPercent = value;
        RaisePropertyChanged("LoadingPercent");
    }
}

您返回get StaticClass.Percentage,但在集合中指定了loadingPercent

我不确定为什么你需要静态类,但是如果你想抛弃viewmodel并直接绑定到static属性,see here