我有一个带命令绑定的弹出式Gui,
<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>
Run Code Online (Sandbox Code Playgroud)
在C#文件中我绑定命令:
CommandBinding okCommandBinding = new CommandBinding(OkCommand);
okCommandBinding.Executed += popupButtons_Executed;
okCommandBinding.CanExecute += okCommandBinding_CanExecute;
CommandBindings.Add(okCommandBinding);
btnPopupOk.Command = OkCommand;
Run Code Online (Sandbox Code Playgroud)
当我从同一个线程使用它时工作正常,当我从Web服务获得回调时,我使用Dispatcher来显示消息,我可以在弹出窗口中看到新文本但绑定不起作用按钮保持不可用(CanExecute = false),当我用鼠标点击屏幕时,弹出窗口更新CanExecute的实际值,按钮显示为可用.
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
popup.Visibility = Visibility.Visible;
popup.Focus();
}));
Run Code Online (Sandbox Code Playgroud)