为DataGridView配置EventToCommandBehavior的问题及解决方法
问题
需要为DataGridView配置EventToCommandBehavior,此前在ListView中可以正常使用该行为,代码如下:
<pages:PopupPage.Resources> <ResourceDictionary> <xct:ItemTappedEventArgsConverter x:Key="ItemTappedEventArgsConverter"/> </ResourceDictionary> </pages:PopupPage.Resources> <ListView ItemsSource="{Binding Liste}"> <ListView.Behaviors> <xct:EventToCommandBehavior EventName="ItemTapped" Command="{Binding ListeTapCommand}" EventArgsConverter="{StaticResource ItemTappedEventArgsConverter}" /> </ListView.Behaviors> </ListView>
但为DataGridView配置时,找不到对应的EventArgsConverter,该如何解决?
解决方案
由于DataGridView的Tap事件使用DataGridGestureEventArgs类型的参数,没有现成的官方转换器,需要自定义一个事件参数转换器来提取选中的项:
- 创建自定义转换器类
public class DataGridGestureEventArgsConverter : BaseNullableConverterOneWay<DataGridGestureEventArgs, object> { /// <summary> /// 从DataGridGestureEventArgs对象中提取并返回Item属性值 /// </summary> /// <param name="value">待转换的事件参数</param> /// <returns>事件参数中的Item对象</returns> public override object ConvertFrom(DataGridGestureEventArgs value) => value?.Item; }
- 在XAML中引入转换器所在命名空间
xmlns:data="clr-namespace:YourApp.Data"
(注意替换YourApp.Data为实际存放转换器的命名空间)
- 在资源字典中注册自定义转换器
<pages:PopupPage.Resources> <ResourceDictionary> <xct:ItemTappedEventArgsConverter x:Key="ItemTappedEventArgsConverter"/> <data:DataGridGestureEventArgsConverter x:Key="DataGridGestureEventArgsConverter"/> </ResourceDictionary> </pages:PopupPage.Resources>
- 为DataGridView配置EventToCommandBehavior
<dxg:DataGridView.Behaviors> <xct:EventToCommandBehavior EventName="Tap" Command="{Binding ListeTapCommand}" EventArgsConverter="{StaticResource DataGridGestureEventArgsConverter}"/> </dxg:DataGridView.Behaviors>
此方案已验证可正常运行。
内容的提问来源于stack exchange,提问作者Mert Altiparmak
相关产品推荐
相关产品推荐

