【发布时间】:2015-01-29 11:28:35
【问题描述】:
我正在尝试在新任务期间将 ProgressBar - IsInterminate 的属性更改为 true。我已将 DataContext 添加到我的状态栏(进度条的父级)并绑定到进度条属性:
<StatusBar>
<StatusBar.DataContext>
<viemodel:EventsViewModel/>
</StatusBar.DataContext>
<ProgressBar Name="pbProgress" IsIndeterminate="{Binding Pennding}"/>
</StatusBar>
在 ViewModel(实现 INotifyPropertychanged)中我添加了属性:
private static bool _pending = false;
public bool Pennding
{
get { return _pending; }
set
{
_pending = value;
NotifyPropertyChanged();
}
}
并尝试在命令中更改该属性:
App.Current.Invoke(() => new EventsViewModel { Pennding = true }));
但什么都没有改变!我检查了有关绑定的调试信息,没有错误。
【问题讨论】:
-
您在 lambda 中创建的实例实际上并没有绑定到任何东西。您的 StatusBar 创建自己的实例并侦听其更改通知。但是由于您不更改该实例,因此那里没有任何反应。您可以在开始任务的地方发布您的其他 ViewModel 的代码吗?
-
pastebin.com/icipx8tn 这是我工作的命令。我已将静态 EventsViewModel 字段添加到此类并将 x:Name 添加到 DataContect 到状态栏,它可以工作 - 但我不知道为什么。
-
你是不是一开始就设置了DataContext?
-
Tesy' 我已将上下文添加到状态栏并在调试期间检查它。
标签: c# wpf mvvm data-binding