在我的WPF应用程序中,我有一些属性,我已经绑定到XAML对应物,但由于某些原因,只要它们的值发生变化就不会设置。我已经实现了INotifyPropertyChanged
界面以及为此View设置了DataContext
,但它仍然没有进行任何更改。
我对此ViewModel中的其他属性使用了相同的模式,但其他属性却没有。
以下是我当前代码的片段:
public class TestViewModel : INotifyPropertyChanged
{
private string testString;
public TestViewModel()
{
.....
this.RunCommand = new RelayCommand(this.RunAction);
}
public string TestString
{
get
{
return this.testString;
}
set
{
this.testString = value;
this.OnPropertyChanged("TestString");
}
}
private void RunAction()
{
.....
this.testString = "Running.";
}
}
<StatusBarItem>
<TextBlock Text="{Binding Path=TestString, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" />
</StatusBarItem>
MainWindow
类的代码隐藏中设置)var testViewModel = SimpleIoc.Default.GetInstance<TestViewModel>();
var testWindow = new TestWindow() { DataContext = testViewModel };
testingWindow.Show();
如果有帮助,这是多窗口应用程序的一部分,它使用MVVM-Light在类之间传递属性。
答案 0 :(得分:4)
您没有更改TestString的值,您正在分配一个命令来更改值,但您似乎没有执行它。
this.RunCommand = new RelayCommand(this.RunAction);
将该命令绑定到某个地方或从某个地方手动执行。
您还需要指定属性而不是字段
this.TestString = "Running.";
答案 1 :(得分:0)
我发现了问题。您只是更新私有属性testString。但是,您不更新属性TestString,因此永远不会调用notify。
试试这个:
this.TestString = "Running";