C# 绑定未在命令中更新
我有一个列表框,其中包含一些“应用程序”对象。 可以启动或停止“应用程序”对象 对于列表框中的每个元素,我有两个按钮,第一个按钮用于启动应用程序,第二个按钮用于停止应用程序 但是,当我点击开始按钮时,它并没有正确地更新绑定“IsRunning”。 当我在应用程序内部单击时,命令的CanExecute将重新计算,尽管有“CommandManager.InvalidateRequestSuggested();” 因此,我的开始按钮保持启用状态,我的停止按钮从不显示C# 绑定未在命令中更新,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个列表框,其中包含一些“应用程序”对象。 可以启动或停止“应用程序”对象 对于列表框中的每个元素,我有两个按钮,第一个按钮用于启动应用程序,第二个按钮用于停止应用程序 但是,当我点击开始按钮时,它并没有正确地更新绑定“IsRunning”。 当我在应用程序内部单击时,命令的CanExecute将重新计算,尽管有“CommandManager.InvalidateRequestSuggested();” 因此,我的开始按钮保持启用状态,我的停止按钮从不显示 <ListBox Grid.
<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>
我从未见过这样的人。您需要在某处创建它们,然后使用
StaticResource
/DynamicResource
引用它们:
<Window.Resources>
<Converters:InvertedBoolToVisibilityConverter x:Key="invBoolConv"/>
</Window.Resources>
<Button Margin="5,0" Content = "Start"
Command="{Binding StartCommand}"
Visibility="{Binding IsRunning, Converter={StaticResource invBoolConv}"/>
愚蠢的问题:您是否在命令回调中更新IsRunning
?您是否更新了m_IsRunning
?是的,IsRunning已更新,因为在另一个视图中,所有内容都已正确更新…天哪!对不起,这是正确的。。。在另一个线程中,我将m_设置为正在运行,而不是正在运行。。。
<Window.Resources>
<Converters:InvertedBoolToVisibilityConverter x:Key="invBoolConv"/>
</Window.Resources>
<Button Margin="5,0" Content = "Start"
Command="{Binding StartCommand}"
Visibility="{Binding IsRunning, Converter={StaticResource invBoolConv}"/>