设置不可调整大小的GridViewColumn

皮西卡特

我在C#WPF应用程序中将ListView与GridViewColumn一起使用。

对于某些列,我使用了可见性管理器(此工具)。但是,当第1列和第3列可见而第2列不可见时,如果光标太右,则调整第1列的大小会使第2列出现。

如果IsVisible为false,是否可以在列上禁用调整大小(和取消激活光标)?

我看到了该文章,但无法在上使用它GridViewColumnVisibilityManager,我的专栏文章并不总是固定的。

GridViewColumnVisibilityManager有趣的部分

private static void OnIsVisibleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    GridViewColumn gc = d as GridViewColumn;
    if (gc == null)
        return;

    if (GetIsVisible(gc) == false)
    {
        originalColumnWidths[gc] = gc.Width;
        gc.Width = 0;
        // Fix Size there
    }
    else
    {
        if (gc.Width == 0)
        {
            gc.Width = originalColumnWidths[gc];
            //UnFix
        }
    }
}

是否可以以编程方式从色谱柱上卸下夹持器?

一种方法是重新设置GridViewColumnHeader的样式,以删除其Template内部的抓手

皮西卡特

终于找到了解决方案:

在App.xaml中:

<Style x:Key="disabledColumn" TargetType="GridViewColumnHeader">
    <Setter Property="IsEnabled" Value="False"/>
</Style>

在GridViewColumnVisibilityManager.cs中:

public class GridViewColumnVisibilityManager
{
    static Dictionary<GridViewColumn, double> originalColumnWidths = new Dictionary<GridViewColumn, double>();
    static Dictionary<GridViewColumn, Style> originalColumnHeader = new Dictionary<GridViewColumn, Style>();

    public static bool GetIsVisible(DependencyObject obj)
    {
        return (bool)obj.GetValue(IsVisibleProperty);
    }

    public static void SetIsVisible(DependencyObject obj, bool value)
    {
        obj.SetValue(IsVisibleProperty, value);
    }

    public static readonly DependencyProperty IsVisibleProperty =
            DependencyProperty.RegisterAttached("IsVisible", typeof(bool), typeof(GridViewColumnVisibilityManager), new UIPropertyMetadata(true, OnIsVisibleChanged));

    private static void OnIsVisibleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        GridViewColumn gc = d as GridViewColumn;
        if (gc == null)
            return;

        if (GetIsVisible(gc) == false)
        {
            originalColumnWidths[gc] = gc.Width;
            gc.Width = 0;

            originalColumnHeader[gc] = gc.HeaderContainerStyle;
            gc.HeaderContainerStyle = Application.Current.FindResource("disabledColumn") as Style;
        }
        else
        {
            if (gc.Width == 0)
            {
                gc.Width = originalColumnWidths[gc];
                gc.HeaderContainerStyle = originalColumnHeader[gc];
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态大小不可调整大小的数组

来自分类Dev

window.open不可调整大小,可滚动

来自分类Dev

PDF图片可调整大小

来自分类Dev

为什么不能设置AnchorPane的可调整大小属性?

来自分类Dev

使多选列表可调整大小

来自分类Dev

KendoUI可调整大小的小部件?

来自分类Dev

点击使SVG可调整大小

来自分类Dev

JavaFX Scene Builder-设置可调整大小的Rectangle

来自分类Dev

使用可调整大小的方法使输入字段不可单击

来自分类Dev

将GLFW窗口设置为不可调整大小

来自分类Dev

使控件可调整大小

来自分类Dev

使GWT Flextable列可调整大小

来自分类Dev

使背景图像不可调整大小

来自分类Dev

使JTable列标题不可移动/可调整大小

来自分类Dev

为可调整大小的jQuery对象设置'position'属性

来自分类Dev

不可调整大小的窗口快速

来自分类Dev

Glade 3.X不可调整大小的窗口

来自分类Dev

JavaFx可调整大小

来自分类Dev

如何使Tkinter窗口不可调整大小?

来自分类Dev

如果实现了onBoxReady()方法,则窗口不可调整大小/不可移动

来自分类Dev

无法设置其中包含可调整大小的映像的HStack

来自分类Dev

Unity scrollrect视口不可调整大小

来自分类Dev

window.open不可调整大小,可滚动

来自分类Dev

如何使文本字段不可调整大小/不可拉伸

来自分类Dev

jQuery Mobile不可调整的宽度

来自分类Dev

使TableViewColumn不可调整大小

来自分类Dev

使控件可调整大小

来自分类Dev

使GTK#窗口不可调整大小

来自分类Dev

使背景图像不可调整大小