如何为双击绑定到WPF中的祖先类型属性



我有一个xaml文件,它是父文件。我从另一个xaml文件获取该文件的内容。当我双击内容时,它应该调用父部分中的关闭按钮操作。

<Window x:Class="NextGen.Optik.UI.Presentation.Views.Forms.InventoryMasterSearchForm"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:inventorycontrols="clr-namespace:NextGen.Optik.UI.Presentation.Controls.Inventory"
xmlns:inventoryviewmodels="clr-namespace:NextGen.Optik.UI.Presentation.ViewModels.Inventory"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:prism="http://prismlibrary.com/"
mc:Ignorable="d"
Title="Inventory Master" Height="910" Width="1295" ShowInTaskbar="False" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/NextGen.Optik.UI.Presentation;component/ProjectDataSources.xaml"/>
<ResourceDictionary Source="/NextGen.Optik.UI.Presentation;component/ResourceDictionaries/GlobalStyles.xaml"/>
<ResourceDictionary Source="/NextGen.Optik.UI.Presentation;component/ResourceDictionaries/DataTemplates/InventoryMaster.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Window.DataContext>
<Binding Mode="OneWay" Source="{StaticResource InventoryMasterMainDataSource}"/>
</Window.DataContext>
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewKeyDown">
<prism:InvokeCommandAction Command="{Binding ProcessWindowsInputCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>

<Grid Margin="0,0,10,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ToolBarTray Margin="0,5">
<ToolBar KeyboardNavigation.TabNavigation="Continue">
<Button Margin="10,0" CommandParameter="Search_Filter" Command="{Binding ButtonClicks}">
<StackPanel Orientation="Vertical">
<Image Source="/NextGen.Optik.UI.Presentation;component/Resources/search.png" Width="32" Height="32" Margin="0,2"/>
<TextBlock Text="Search" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Margin="10,0" CommandParameter="Clear_Filter" Command="{Binding ButtonClicks}" >
<StackPanel Orientation="Vertical">
<Image Source="/NextGen.Optik.UI.Presentation;component/Resources/clear_filters.png" Width="32" Height="32" Margin="0,2" />
<TextBlock Text="Clear Filters" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</ToolBar>
</ToolBarTray>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="245" MaxWidth="400"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<inventorycontrols:SearchFiltersControl MinWidth="220" Padding="0,0,5,0" />
<GridSplitter HorizontalAlignment="Stretch" Height="Auto" Width="4" Grid.Column="1"/>
<Grid Grid.Column="2" Margin="5,0,0,0" DataContext="{Binding SearchResults}">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock  Margin="5,10" Text="{Binding NoRecordVisible}"  FontSize="25" Foreground="Red" />
<ComboBox x:Name="viewModeComboBox" HorizontalAlignment="Right" VerticalAlignment="Center" ItemsSource="{Binding ViewModes}"
SelectedItem="{Binding SelectedViewMode}" VerticalContentAlignment="Center" Margin="0,10">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Margin="5,3" Source="{Binding ModeIconPath}" />
<TextBlock Text="{Binding ModeName}" Margin="3" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ContentControl Content="{Binding}" Grid.Row="1" IsTabStop="False" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}},Path=ButtonClicks}" CommandParameter="close"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}" >
<Style.Triggers>
<DataTrigger Value= "List View" Binding="{Binding SelectedValue.ModeName, ElementName=viewModeComboBox}">
<Setter Property="ContentTemplate" Value="{StaticResource ListViewTemplate}" />
</DataTrigger>
<DataTrigger Value= "Gallery View" Binding="{Binding SelectedValue.ModeName, ElementName=viewModeComboBox}">
<Setter Property="ContentTemplate" Value="{StaticResource GalleryViewTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
</Grid>
</Grid>
<Grid Grid.Row="2">
<Grid>
<Button Margin="0,10" HorizontalAlignment="Right" Style="{StaticResource CommandButtonStyle}" Content="Close"  Command="{Binding ButtonClicks}" CommandParameter="close">
</Button>
</Grid>
</Grid>
</Grid>

我已经在ContentControl中编写了双击触发器命令。我想在双击内容时调用关闭按钮功能。

以下更改对我有效:

<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}},Path=DataContext.ButtonClicks}" CommandParameter="close"/>

最新更新