小编Tam*_*Bui的帖子

WPF:使用命令绑定和线程无法控制按钮的启用/禁用状态

我有一个WPF应用程序,它只包含一个Button和一个Textbox来显示一些输出.当用户单击Button时,会启动一个禁用Button的线程,将东西打印到输出Textbox,然后线程停止(此时我想再次启用Button).

该应用程序似乎正确禁用按钮,以及正确更新文本框.但是,当线程完成时,它总是无法正确地重新启用Button!谁能告诉我我做错了什么?

这是我的xaml的片段:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button Grid.Row="0" HorizontalAlignment="Center" Command="{Binding ExecuteCommand}">E_xecute</Button>
    <Label Grid.Row="1" Content="Output Window:" HorizontalAlignment="Left"/>
    <TextBlock Grid.Row="2" Text="{Binding Output}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这是我的ViewModel代码(我正在使用Josh Smith的MVVM设计):

public class WindowViewModel : ViewModelBase
{
    private bool _threadStopped;
    private RelayCommand _executeCommand;
    private string _output;

    public WindowViewModel()
    {
        _threadStopped = true;
    }

    public string Output { get { return _output; } set { _output = value; OnPropertyChanged("Output"); } }

    public ICommand ExecuteCommand
    {
        get
        {
            if (_executeCommand == null)
            {
                _executeCommand …
Run Code Online (Sandbox Code Playgroud)

wpf multithreading button commandbinding

5
推荐指数
1
解决办法
3168
查看次数

标签 统计

button ×1

commandbinding ×1

multithreading ×1

wpf ×1