是否有可能定义并与约束的CollectionView时,隐藏在WPF的DataGrid列?(Is i

2019-09-30 04:30发布

我与例如试图从这里

http://msdn.microsoft.com/en-us/library/ff407126

我想补充一个控件,用户可以定义哪些列是可见的。 可以这样很容易做到?

我发现http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/但因为它没有使用的CollectionView是不同的和CollectionViewSource。

感谢和BR -Matti

Answer 1:

这是可以做到很多方面。 一种方法是编辑DataGrid的列标题样式。 对于列标题样式的例子中可以找到:

更改WPF DataGrid列标题样式,代码隐藏菜单能见度?

代替在文章具有的ControlTemplate菜单等的上面有可以像这里为列标题的按钮:

<Button Grid.Column="2" Name="MultiButton" MouseRightButtonDown="MultiButton_MouseRightButtonDown" Click="MultiButton_Click" Visibility="Hidden">X</Button>

按钮打开弹出菜单用鼠标2号按钮,然后单击应该删除该列。 该按钮默认隐藏因此,必须有触发使按钮可见,当鼠标移动到列标题:

<Trigger Property="IsMouseOver" Value="True" >
    <Setter Property="Visibility" TargetName="DeleteColumn" Value="Visible" />                            
</Trigger>

因为所有列有按钮的Click事件要弄清楚隐藏的列:

private void MultiButton_Click(object sender, RoutedEventArgs e)
{
   object dataContext = ((FrameworkElement)sender).DataContext;
   foreach (DataGridColumn col in dataGrid1.Columns)
   {
       if (col.Header.ToString() == dataContext.ToString())
       {
           col.Visibility = Visibility.Hidden;
       }
   }
}

这可能不是这样做的最佳方式,但它的工作原理。



文章来源: Is it possible to hide columns in WPF DataGrid when defined and bound with CollectionView?