为什么我的某些按钮在运行时被禁用?

时间:2014-12-18 15:39:42

标签: c# wpf xaml

当窗口打开时,Abort可以点击,但所有其他按钮都没有。 我把断点放在我的吸气者身上:

public ICommand OkCommand
        {
            get { return _okCommand; }
        }

并且在调用按钮后禁用该按钮。我觉得我在这里遗漏了一些明显的东西。我的装订设置不正确吗?还是没有正确初始化?

我的ViewModel构造函数:

[ImportingConstructor]
        public MyViewModel(IMyViewModel view)
            : base(view)
        {
            _okCommand = new DelegateCommand(OkHandler, IsValid);
            _refreshCommand = new DelegateCommand(RefreshHandler, IsValid);
            _testConnCommand = new DelegateCommand(TestConnectionHandler, IsValid);
        }

我的XAML用于两个按钮。

<StackPanel Orientation="Horizontal" Margin="0,14" HorizontalAlignment="Center" DockPanel.Dock="Bottom">
            <Button Command="{Binding OkCommand}" Content="Ok" IsDefault="True" TabIndex="3" Margin="5,0"/>
            <Button Content="Abort" IsCancel="True" TabIndex="4" Margin="0"/>
        </StackPanel>

1 个答案:

答案 0 :(得分:1)

DelegateCommand constructor的第二个参数是Func,它告诉Command是否可执行。 WPF使用它来确定是否应该启用按钮等。

我会检查您的IsValid Func /方法是否正常,即:返回true