Слайдер ValueChanged метод команды (MVVM WPF Devexpress) - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь привязать метод к измененному значению ползунка. Я использую 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 голосов
/ 28 августа 2018

Поскольку вы привязываете ползунок к 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.
    }
}
...