切换到MVVMLight时可以执行问题

问题描述 投票:0回答:2

我一直在使用从文章(RelayCommand)复制来的probably this one,下面的CreateExamCommand可以正常工作,并且CanExecute绑定到`Name是否为空。

XAML

<UniformGrid Columns="2" DockPanel.Dock="Bottom">
    <Button Content="Cancel" Command="{Binding CancelCommand}" HorizontalAlignment="Left"/>
    <Button Content="Create" Command="{Binding CreateExamCommand}" HorizontalAlignment="Right"/>
</UniformGrid>

<StackPanel VerticalAlignment="Center">
    <TextBox Name="textBox" Tag="Exam Name" 
             Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />

尖锐

public RelayCommand CreateExamCommand => new RelayCommand(
  () => CreateExam(Name, Date),
  () => !string.IsNullOrEmpty(_name)
);

但是,我刚刚安装了MVVMLightLibs,以替换我手动复制的代码(并删除了我的RelayCommand版本)。现在CanExecuteCreateExamCommand方法已损坏。

我在WriteLine中放入了一些CanExecute,它似乎仅在首次加载视图(模型)时运行。

我该如何解决?

c# wpf mvvm-light
2个回答
1
投票

取决于您所使用的MVVMLight的RelayCommand版本。

如果您具有名称空间“ GalaSoft.MvvmLight.CommandWpf”,则您的命令将使用CommandManager对象,并在每次击键或单击鼠标后自动刷新CanExecute。


0
投票

我该如何解决?

© www.soinside.com 2019 - 2024. All rights reserved.