У меня есть всплывающее окно с графическим интерфейсом команды связыванияWPF 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>
в C# файл я связать команду:
CommandBinding okCommandBinding = new CommandBinding(OkCommand);
okCommandBinding.Executed += popupButtons_Executed;
okCommandBinding.CanExecute += okCommandBinding_CanExecute;
CommandBindings.Add(okCommandBinding);
btnPopupOk.Command = OkCommand;
Его прекрасно работать, когда я использую его из тот же поток, когда я получаю обратный вызов из веб-службы, который находится в другом потоке, я использую диспетчер для отображения сообщения, я могу видеть новый текст во всплывающем окне, но привязка не работает, кнопка остается недоступной (CanExecute = false) , Когда я нажимаю на экран с помощью мыши, всплывающее окно обновляет реальное значение CanExecute a d появится кнопка.
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
popup.Visibility = Visibility.Visible;
popup.Focus();
}));
В чем Ваш вопрос, точно? –
Зачем вам нужно изменить CommandBinding кнопки? –
@dmitri Я думаю, что он хочет знать, почему команды обновляются только после того, как он щелкнул по экрану. – ArielBH