滑块ValueChanged方法命令(MVVM WPF Devexpress)

时间:2018-08-28 01:31:27

标签: c# wpf mvvm devexpress devexpress-wpf

我正在尝试将方法绑定到滑块更改的值。 我正在使用devexpress poco,

XAML:

<ListView.ItemTemplate>
     <DataTemplate>
          <StackPanel Height="140" Margin="20">
               <Slider Height="100" Width="40" Margin="5" HorizontalAlignment="Left" TickFrequency="10" TickPlacement="BottomRight" Orientation="Vertical" Minimum="0" Maximum="100" Value="{Binding VolumeLevel}">
                    <dxmvvm:Interaction.Behaviors>
                         <dxmvvm:EventToCommand EventName="ValueChanged" Command="{Binding Path=VolumeChangedCommand}" />
                    </dxmvvm:Interaction.Behaviors>
               </Slider>
               <TextBlock Text="{Binding Name}" />
          </StackPanel>
     </DataTemplate>
</ListView.ItemTemplate>

我的C#代码:

public void VolumeChanged()
{
     ...
}

永远不会调用该方法。
有什么建议么?

1 个答案:

答案 0 :(得分:1)

因为您将滑块绑定到Command(此行:<dxmvvm:EventToCommand EventName="ValueChanged" Command="{Binding Path=VolumeChangedCommand}" />),并且没有Command,所以它不会触发。您需要做的就是添加一个public Command VolumeChangedCommand

private ICommand _VolumeChangedCommand;
public ICommand VolumeChangedCommand
{
    get
    {
        if (_VolumeChangedCommand == null)
            _VolumeChangedCommand = new CommandImplement();
        return _VolumeChangedCommand ;
    }
    set
    {
        _VolumeChangedCommand = value;
    }
}

class CommandImplement: ICommand
{
    public bool CanExecute(object parameter)
    {
        return true;
    } 
    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    } 

    public void Execute(object parameter)
    {
         VolumeChanged(); //Call your method or put your code here.
    }
}