小编Yai*_*irT的帖子

WPF Gui从不同的Thread刷新

我有一个带命令绑定的弹出式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)

.net wpf

4
推荐指数
1
解决办法
8640
查看次数

标签 统计

.net ×1

wpf ×1