Wpf Listview控件模板。如何将事件添加到命令?
你好, 我试图为listview控件模板中包含的按钮向命令触发器添加一个事件。我们有一个运行在客户端触摸屏上的应用程序,它对按钮按下过于敏感。我想处理buttons PreviewMouseUp事件来解决这个问题(当前,当他们按下按钮时,它也会按下按钮下面的内容,例如,按下按钮两次) 但是,命令处理程序代码在我的视图模型中没有被命中Wpf Listview控件模板。如何将事件添加到命令?,wpf,listview,Wpf,Listview,你好, 我试图为listview控件模板中包含的按钮向命令触发器添加一个事件。我们有一个运行在客户端触摸屏上的应用程序,它对按钮按下过于敏感。我想处理buttons PreviewMouseUp事件来解决这个问题(当前,当他们按下按钮时,它也会按下按钮下面的内容,例如,按下按钮两次) 但是,命令处理程序代码在我的视图模型中没有被命中 任何帮助都将不胜感激。通过按钮将IshitteVisible设置为“True”。 <ListView x:Name=
任何帮助都将不胜感激。通过按钮将
IshitteVisible
设置为“True”。
<ListView
x:Name="ListViewPoducts"
SelectionMode="Single"
ItemsSource="{Binding ProductGroups}"
SelectedItem="{Binding SelectedProductGroup}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Background="{StaticResource NouvemLightBackgroundBrush}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border Background="Transparent" >
<Button Name="button" Style="{StaticResource StyleButtonTouchscreenMenu}" IsHitTestVisible="False">
<Grid>
<TextBlock Text="{Binding Name}"
FontSize="{Binding Source={x:Static global:ApplicationSettings.TouchscreenMenuButtonFontSize}}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center"
TextWrapping="Wrap" />
</Grid>
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseUp">
<command:EventToCommand Command="{Binding GroupSelectedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="button" Property="Background" Value="{StaticResource NouvemSecondaryMainBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.Resources>
<Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource StyleScrollBarTouchscreenNarrow}"/>
</ListView.Resources>
</ListView>
我想出来了。只需要将我的event to命令绑定到根元素数据上下文
谢谢
<ListView
x:Name="ListViewPoducts"
SelectionMode="Single"
ItemsSource="{Binding ProductGroups}"
SelectedItem="{Binding SelectedProductGroup}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Background="{StaticResource NouvemLightBackgroundBrush}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border Background="Transparent" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseUp">
<command:EventToCommand Command="{Binding DataContext.HandeProductionProductGroupSelectionCommand, ElementName=ListViewPoducts}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Button Name="button" Style="{StaticResource StyleButtonTouchscreenMenu}" IsHitTestVisible="False">
<Grid>
<TextBlock Text="{Binding Name}"
FontSize="{Binding Source={x:Static global:ApplicationSettings.TouchscreenMenuButtonFontSize}}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center"
TextWrapping="Wrap" />
</Grid>
</Button>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="button" Property="Background" Value="{StaticResource NouvemSecondaryMainBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.Resources>
<Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource StyleScrollBarTouchscreenNarrow}"/>
</ListView.Resources>
</ListView>