XAML 在WPF、MVVM中绑定滑块命令

5tmbdcev  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(165)

我在XAML中有一个滑块,我想将“Thumb.DragCompleted”事件处理程序绑定到我在ViewModel中定义的命令。代码如下:

<Slider Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Maximum="100" TickFrequency="100"
                    Value="{Binding ExposureTime}" Thumb.DragCompleted="SliderDragCompleted">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Thumb.DragCompleted">
                        <i:InvokeCommandAction x:Name="SliderCompleted" Command="{Binding SetExposureCommand}"></i:InvokeCommandAction>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                
            </Slider>

下面是viewModel中的函数:

public ICommand SetExposureCommand => _setExposure ?? (_setExposure = new CommonCore.GuiControls.Commands.RelayCommand(SetExposure));

   public void SexExposure()
   {
      vimbaCamera.SetExposure(ExposureTime);
   }

但该函数从未被调用。任何帮助将不胜感激。

7eumitmz

7eumitmz1#

Thumb.DragCompleted是一个附加事件,您正在使用的EventTrigger不支持附加事件。
你要么实现自己的custom event trigger,要么直接从SliderDragCompleted事件处理程序调用命令:

private void SliderDragCompleted(object sender, DragCompletedEventArgs e)
{
    SetExposureCommand.Execute(null);
}

这并没有破坏MVVM模式,因为与在XAML标记中使用交互触发器相比,您是从完全相同的视图调用完全相同的命令。MVVM不是关于从视图中消除代码-它是关于关注点的分离。

相关问题