gpt4 book ai didi

wpf - 禁止在不可排序的 WPF ListView header 中按下按钮反馈

转载 作者:行者123 更新时间:2023-12-04 20:07:22 25 4
gpt4 key购买 nike

对于绑定(bind)到不需要或不支持排序的简单列表的 WPF ListView,您如何做到这一点,以便用户在单击标题时不会获得按钮按下反馈?默认情况下,单击列标题的中间感觉就像按下按钮一样没有任何反应。

我试图实现的外观示例是在系统控制面板 > 高级系统设置 > 用户配置文件设置中。配置文件列表不支持排序。因此,单击时标题不会响应(列调整大小点击除外)。

最佳答案

您可以通过将您不想点击的列标题上的“IsEnabled”设置为 false 来实现此目的。我粘贴了一个用作测试的示例。我唯一做的另一件事是更改前景画笔,使禁用的列标题像其他标题一样显示为黑色。

<ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="120">
<GridViewColumnHeader IsEnabled="True" Content="Col A" Foreground="Black"/>
</GridViewColumn>
<GridViewColumn Width="120">
<GridViewColumnHeader IsEnabled="False" Content="Col B" Foreground="Black"/>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem>1</ListViewItem>
<ListViewItem>4</ListViewItem>
<ListViewItem>2</ListViewItem>
<ListViewItem>3</ListViewItem>
</ListView>

第一列可点击,第二列不可点击。希望这对您有所帮助!

编辑:我的评论中引用的示例。此方法使 header 保持启用状态,但仍不允许单击它:

<ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="120">
<GridViewColumnHeader Content="Col A"/>
</GridViewColumn>
<GridViewColumn Width="120">
<GridViewColumnHeader Content="Col B" PreviewMouseDown="GridViewColumnHeader_PreviewMouseDown"/>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem>1</ListViewItem>
<ListViewItem>4</ListViewItem>
<ListViewItem>2</ListViewItem>
<ListViewItem>3</ListViewItem>

以及事件的代码隐藏:

private void GridViewColumnHeader_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}

这基本上“吞噬”了在此按钮上所做的任何点击。不幸的是,它也会阻止您调整大小,因为您需要单击才能调整大小。可能有一种方法可以测试点击以查看它是“按钮”点击还是“调整区域大小”点击,并且只处理按钮点击,但我不确定。

关于wpf - 禁止在不可排序的 WPF ListView header 中按下按钮反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2858536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com