我有一個包含一些「應用程序」對象的列表框。 「應用程序」對象可以啓動或停止。綁定不更新命令
對於我的Listbox中的每個元素,我有2個按鈕,第一個啓動應用程序,第二個停止應用程序。
但是,當我點擊開始按鈕時,它並沒有正確更新綁定「IsRunning」。 儘管「CommandManager.InvalidateRequerySuggested();」在單擊應用程序內部時,CanExecute of命令被重新評估
因此,我的啓動按鈕保持啓用狀態,我的停止按鈕從不顯示。
<ListBox Grid.Row="1" ItemsSource="{Binding Applications}" Grid.ColumnSpan="3" BorderThickness="0" Background="#FFE8E8E8" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Margin="5,0" Content = "Start"
Command="{Binding StartCommand}"
Visibility="{Binding IsRunning, Converter={Converters:InvertedBoolToVisibilityConverter}}"/>
<Button Margin="5,0" Content = "Stop"
Command="{Binding StopCommand}"
Visibility="{Binding IsRunning, Converter={Converters:BoolToVisibilityConverter}}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在ApplicationViewModel:
public bool IsRunning
{
get
{
return this.m_IsRunning;
}
set
{
this.m_IsRunning = value;
this.OnPropertyChanged("IsRunning");
CommandManager.InvalidateRequerySuggested();
}
}
愚蠢的問題:你是否更新'IsRunning'在命令回調?你是否更新'm_IsRunning'? – meilke
是的,IsRunning已更新,因爲在另一個視圖中,每件事情都正確更新... –
OMG!對不起,這是正確的......在另一個線程中,我設置了m_IsRunning而不是IsRunning ... –