C# GridViewColumnHeader上的相对资源绑定不起作用
我有一个列表视图,如下所示。工具提示显示良好,但上下文菜单不绑定。我有类似大众的参考资料 窗口标记中的C# GridViewColumnHeader上的相对资源绑定不起作用,c#,wpf,tooltip,contextmenu,C#,Wpf,Tooltip,Contextmenu,我有一个列表视图,如下所示。工具提示显示良好,但上下文菜单不绑定。我有类似大众的参考资料 窗口标记中的xmlns:vw=“clr命名空间:WpfModelViewDemoApplication.Views”。 谢谢你的帮助 <ListView x:Name="lstView" Grid.Row="2" BorderBrush="White" ItemsSource="{Binding Path=Students}" HorizontalAlignment="Stretch">
xmlns:vw=“clr命名空间:WpfModelViewDemoApplication.Views”
。
谢谢你的帮助
<ListView x:Name="lstView" Grid.Row="2" BorderBrush="White" ItemsSource="{Binding Path=Students}" HorizontalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}">
<GridViewColumnHeader Content="Name" Style="{StaticResource GridViewHeaderStyle}"
MouseDown="GridViewColumnHeader_MouseDown" MouseUp="GridViewColumnHeader_MouseDown"
Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type vw:MainView}}}">
<GridViewColumnHeader.ContextMenu>
<ContextMenu Name="DisplayColumns" DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<MenuItem Header="Time Added" IsCheckable="True" IsChecked="True"/>
<MenuItem Header="{Binding Tag.Comments}" IsCheckable="True" IsChecked="True"/>
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn Header="Score" HeaderContainerStyle="{StaticResource GridViewHeaderStyle}" DisplayMemberBinding="{Binding Path=Score}" />
<GridViewColumn Header="TimeAdded" HeaderContainerStyle="{StaticResource GridViewHeaderStyle}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="{Binding Path=TimeAdded}" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type vw:MainView}}}">
<Button.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Tag.Comments}"/>
</ToolTip>
</Button.ToolTip>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView >
UPDATE: Found the answer if anyone needs it
<Window 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:c="clr-namespace:WpfModelViewDemoApplication.Commands"
xmlns:vw="clr-namespace:WpfModelViewDemoApplication.Views"
xmlns:vm="clr-namespace:WpfModelViewDemoApplication.ViewModels"
x:Class="WpfModelViewDemoApplication.Views.MainView"
mc:Ignorable="d"
d:DataContext="{DynamicResource MainViewModel}"
x:Name="MainWindow"
FontFamily="Verdana"
Title="WPF MVVM Tutorial">
<Window.Resources>
<vm:MainViewModel x:Key="MainViewModel"/>
<DataTemplate x:Key="ResourceItemTemplate">
<GridViewColumnHeader Content="Name" Tag="{Binding DataContext, ElementName=MainWindow}">
<GridViewColumnHeader.ContextMenu>
<ContextMenu s>
<MenuItem Header="Time Added" IsCheckable="True" IsChecked="{Binding PlacementTarget.Tag.IsTimeAddedSelected,RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem Header="Comment" IsCheckable="True" IsChecked="{Binding PlacementTarget.Tag.IsCommentSelected,RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</DataTemplate>
</Window.Resources>
<ListView x:Name="lstView" Grid.Row="2" BorderBrush="White" ItemsSource="{Binding Path=Students}" HorizontalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn HeaderContainerStyle="{StaticResource GridViewHeaderStyle}" HeaderTemplate="{StaticResource ResourceItemTemplate}" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Score" HeaderContainerStyle="{StaticResource GridViewHeaderStyle}" DisplayMemberBinding="{Binding Path=Score}" />
<GridViewColumn Header="TimeAdded" HeaderContainerStyle="{StaticResource GridViewHeaderStyle}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="{Binding Path=TimeAdded}" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type vw:MainView}}}">
<Button.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Tag.Comments}"/>
</ToolTip>
</Button.ToolTip>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView >
更新:如果有人需要,可以找到答案
找到了答案,以防有人需要。
<Window 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:c="clr-namespace:WpfModelViewDemoApplication.Commands"
xmlns:vw="clr-namespace:WpfModelViewDemoApplication.Views"
xmlns:vm="clr-namespace:WpfModelViewDemoApplication.ViewModels"
x:Class="WpfModelViewDemoApplication.Views.MainView"
mc:Ignorable="d"
d:DataContext="{DynamicResource MainViewModel}"
x:Name="MainWindow"
FontFamily="Verdana"
Title="WPF MVVM Tutorial">
<Window.Resources>
<vm:MainViewModel x:Key="MainViewModel"/>
<DataTemplate x:Key="ResourceItemTemplate">
<GridViewColumnHeader Content="Name" Tag="{Binding DataContext, ElementName=MainWindow}">
<GridViewColumnHeader.ContextMenu>
<ContextMenu s>
<MenuItem Header="Time Added" IsCheckable="True" IsChecked="{Binding PlacementTarget.Tag.IsTimeAddedSelected,RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<MenuItem Header="Comment" IsCheckable="True" IsChecked="{Binding PlacementTarget.Tag.IsCommentSelected,RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</DataTemplate>
</Window.Resources>
<ListView x:Name="lstView" Grid.Row="2" BorderBrush="White" ItemsSource="{Binding Path=Students}" HorizontalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn HeaderContainerStyle="{StaticResource GridViewHeaderStyle}" HeaderTemplate="{StaticResource ResourceItemTemplate}" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Score" HeaderContainerStyle="{StaticResource GridViewHeaderStyle}" DisplayMemberBinding="{Binding Path=Score}" />
<GridViewColumn Header="TimeAdded" HeaderContainerStyle="{StaticResource GridViewHeaderStyle}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="{Binding Path=TimeAdded}" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type vw:MainView}}}">
<Button.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Tag.Comments}"/>
</ToolTip>
</Button.ToolTip>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView >