刷新我有命令綁定一個彈出桂,WPF桂由不同的線程
<Grid x:Name="popup" Visibility="Hidden" DataContext="{Binding Path=PopupMsg}" >
<TextBlock x:Name="tbMessage" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Margin="20,70,10,0"
Text="{Binding Path=Message}" FontSize="16"/>
<Button x:Name="btnPopupOk" Grid.Row="1" Grid.Column="2" Content="{Binding Path=OkContent}" Margin="10,40,10,10"
Command="{Binding}" CommandParameter="true" />
</Grid>
</Border>
</Grid>
在C#文件
我綁定命令:
CommandBinding okCommandBinding = new CommandBinding(OkCommand);
okCommandBinding.Executed += popupButtons_Executed;
okCommandBinding.CanExecute += okCommandBinding_CanExecute;
CommandBindings.Add(okCommandBinding);
btnPopupOk.Command = OkCommand;
其工作正常,當我使用它從同樣的線程,當我從一個不同的線程中的Web服務獲取回調時,我使用Dispatcher顯示一條消息,我可以看到彈出式窗口中的新文本,但綁定不起作用,按鈕仍然不可用(CanExecute = false) ,當我用鼠標點擊屏幕時,彈出窗口會更新CanExecute的實際值d該按鈕顯示爲可用。
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
popup.Visibility = Visibility.Visible;
popup.Focus();
}));
你的問題到底是什麼? – 2009-08-13 09:05:41
爲什麼你需要改變按鈕的CommandBinding? – 2009-08-13 09:06:42
@dmitri我想他想知道爲什麼命令只有在他點擊屏幕後纔會更新。 – ArielBH 2009-08-13 09:19:32