gpt4 book ai didi

wpf - 使用附加命令为 ListView 触发双击事件-MVVM

转载 作者:行者123 更新时间:2023-12-03 10:28:43 30 4
gpt4 key购买 nike

我使用附件命令为Listview中的项目触发了双击事件,因为我使用了MVVM,所以我使用了马龙·格雷奇斯博客(AttachedCommandBehavior V2 aka ACB)中编写的方法!

香港专业教育学院在一个小的测试示例中使用它,并且工作正常,但问题是,当我将其集成到应用程序中时,每次打开页面时都会出现异常/错误,并使用附加属性。

异常(exception)说明:

Invalid Operation Exception - Could not resolve event name 
{Void BindEvent(System.Windows.DependencyObject, System.String)}

它指向事件处理程序定义
    EventHandler = EventHandlerGenerator.CreateDelegate(
Event.EventHandlerType, typeof(CommandBehaviorBinding).GetMethod("Execute", BindingFlags.Public | BindingFlags.Instance), this);

究竟是什么问题?更重要的是,我应该怎么做才能以MVVM友好的方式解决它?提前谢谢!
  <ListView Name="TestListe1" ItemsSource="{Binding TestCollection, UpdateSourceTrigger=PropertyChanged}" Margin="68,22,620,8" IsSynchronizedWithCurrentItem="True" FontSize="12">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="{Binding TmpWdth,ElementName=ThisPage}" >
<GridViewColumn.HeaderTemplate>
<DataTemplate >
<TextBlock Text="ST1" Margin="10,0,10,1" >
</TextBlock>
</DataTemplate>
</GridViewColumn.HeaderTemplate>
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type local:TestListItem}" >
<TextBlock Text="{Binding Element_1, Mode=OneWay}" >
<TextBlock.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding Openusercontrolcommand}"/>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="Auto">
<GridViewColumn.HeaderTemplate>
<DataTemplate DataType="{x:Type local:TestListItem}" >
<TextBlock Text="T2" Margin="10,0,10,0" >
</TextBlock>
</DataTemplate>
</GridViewColumn.HeaderTemplate>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Element_2, Mode=OneWay}" >
<TextBlock.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding MyDoubleClickCommand}"/>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

最佳答案

如果您只想处理双击,则可以使用UIElement.InputBindings

    <ListView ItemsSource="{Binding Items}">
<ListView.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding MyListViewCommand}"/>
</ListView.InputBindings>
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type local:Item}">
<TextBlock Text="{Binding Text}">
<TextBlock.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding MyItemCommand}"/>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

关于wpf - 使用附加命令为 ListView 触发双击事件-MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21015816/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com