c# - 滑块 ValueChanged 方法命令 (MVVM WPF Devexpress)
问题描述
我正在尝试将方法绑定到滑块的更改值。我正在使用 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()
{
...
}
该方法永远不会被调用。
有什么建议么?
解决方案
因为您将滑块绑定到 a Command
(这一行:)<dxmvvm:EventToCommand EventName="ValueChanged" Command="{Binding Path=VolumeChangedCommand}" />
,而您没有 aCommand
所以它不会触发。您需要做的就是添加一个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.
}
}
推荐阅读
- scala - 在 scala 2.13 中,为什么有时无法显式调用类型类?- 第2部分
- visual-c++ - 在 C++17 (CLion) 中使用 Gurobi -“找不到 Gurobi (missing_GUROBI_LIBRARY)”
- python - “选择器”对象不支持项目分配
- javascript - $w.at 事件处理程序在转发器上触发时递归运行。WIX / Corvid / Velo
- javascript - 有没有办法用 vue/nuxt 显式检测浏览器事件(控制台)?
- php - Sass 与 wordpress
- python-3.x - PIL异步保存图像?
- python - for 循环脚本仅在目录中的最后一个文件上完全执行
- java - 从 Intellij 和 Maven 运行 JavaFX 11 项目会产生不同的结果
- spring-security - 使用 Spring Security OAuth2 和 Okta 处理基于 url 的 RBAC