使用参数将事件重新创建为事件

时间:2018-04-23 09:29:22

标签: wpf xaml events binding material-design-in-xaml

我正在尝试将以下命令重写为事件,我按照Arnaud Weils学习WPF MVVM书中的指导原则执行此操作。

<ToggleButton Margin="8 0 16 0" Command="{Binding ToggleBaseCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" />

事件版本看起来像

<Button Content="Send commands to device" Style="{StaticResource MaterialDesignRaisedDarkButton}">
    <i:Interaction.Triggers>
         <i:EventTrigger EventName="Click">
             <ei:CallMethodAction TargetObject="{Binding}"
                                  MethodName="ToggleBaseEvent"/>
         </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

ToggleBaseCommand在viewmodel中如下所示:

public ICommand ToggleBaseCommand { get; } = new AnotherCommandImplementation(o => ApplyBase((bool)o));

private static void ApplyBase(bool isDark)
{
    new PaletteHelper().SetLightDark(isDark);
}

创建ToggleBaseEvent时,我遇到的问题是如何将相对源传递给此方法。使用命令版本,这似乎相对简单,但没有明显的CommandParameter等效于事件版本。我想知道你是否知道如何解决这个问题,或者我最好是实施ICommand的做法。

0 个答案:

没有答案