如何在 WPF 中隐藏组合框的项目

2024-01-26

有没有办法在 WPF 中隐藏组合框的项目? 在我的用户控件中,有一个列表框,其中复选框项目绑定到 ObservableCollection 和一个带有组合框的数据网格。

<ListBox x:Name="AvailableAttributes" Grid.Row="0" Grid.Column="2" SelectionMode="Single" >
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=OneWay}"/>
        </Style>
    </ListBox.ItemContainerStyle>

    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

... 

<DataGrid Name="datagrid" AutoGenerateColumns="False" >
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name}" />
            <DataGridComboBoxColumn 
                SelectedValueBinding="{Binding CBID}" 
                DisplayMemberPath="Name" 
                SelectedValuePath="ID">

                <DataGridComboBoxColumn.ElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="ItemsSource" 
                            Value="{Binding Path=CBItems, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
                    </Style>
                </DataGridComboBoxColumn.ElementStyle>
                <DataGridComboBoxColumn.EditingElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="ItemsSource" 
                            Value="{Binding Path=CBItems, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
                    </Style>
                </DataGridComboBoxColumn.EditingElementStyle>
            </DataGridComboBoxColumn>
        </DataGrid.Columns>
    </DataGrid>

I used 这个解决方案 https://stackoverflow.com/questions/5409259/binding-itemssource-of-a-comboboxcolumn-in-wpf-datagrid管理组合框项目并添加属性“IsSelected”

public class GridItem
{
    public string Name { get; set; }
    public int CBID { get; set; }
}

public class CBItem
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsSelected { get; set; }
}

现在我想使用“IsSelected”属性来隐藏/显示组合框中的项目。有人能告诉我如何实现这一目标吗?


非常简单:只需为组合框项目指定一个带有设置触发器的样式ComboBoxItem.Visibility根据 的值IsSelected on the ComboBoxItem's DataContext:

<Style TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
    <Setter Property="ItemsSource" 
        Value="{Binding Path=CBItems, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSelected}" Value="False">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Setter.Value>
    </Setter>
</Style>

如果您可能要更新IsSelected在组合框加载到网格中后,在任何这些项目上,您将需要实施 INotifyPropertyChanged https://stackoverflow.com/a/29979567/424129 on CBItem以便 UI 反映更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 WPF 中隐藏组合框的项目 的相关文章

  • 将 RenderTargetBitmap 转换为 System.Drawing.Image

    我有 3D WPF 视觉对象 我想将其传递到 Excel 单元格 通过剪贴板缓冲区 对于 普通 BMP 图像 它可以工作 但我不知道如何转换RenderTargetBitmap 我的代码如下所示 System Windows Media I
  • 如何更改通用Windows平台应用程序中单击事件上按钮的背景颜色?

    我正在 Windows 10 中开发 UWP 应用程序 并且尝试更改单击事件中按钮的背景颜色 这是我的代码 private void button1 1 Click object sender RoutedEventArgs e if Si
  • 将 FileSavePicker 与 MessageDialog 的 IUICommand 事件结合使用

    单独来看 所有代码都可以完美运行 用于保存文件的代码片段 用于选择保存文件的目录的代码片段以及消息对话框都非常有效 但是当我将它们结合在一起时 我的访问被拒绝 我没有使用 DocumentsLibrary 功能 因为在这种情况下不需要我这样
  • wpf中基于绑定bool属性的样式对象

    如何使用 wpf 中的 xaml 更改我在 mvvm 设置中要使用的对象的填充颜色 当绑定的属性设置为 True 时 我想将填充颜色更改为红色 该属性称为 IsRound 如果需要的话我会发布代码 我现在不在电脑上 UPDATED 有人可以
  • 列表框未虚拟化

    我有一个未虚拟化的列表框 我显然错过了一些东西 但找不到它 它实际上是一个列表框内的一个列表框 外部列表框有一个 ItemTemplate 其中包含一个 Expander Expander 用于显示一组项目 Expander 的内容是显示项
  • WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢

    我注意到 如果我为任何 CPU x64 构建 WPF 应用程序 则与在 x86 上启动 在发布和调试模式下 相比 启动 大约 20 秒 或加载新控件所需的时间要长得多 VS 的内部或外部 即使是最简单的 WPF 应用程序也会出现这种情况 该
  • 使用 MVVM 时 XamDataGrid 列可见性不起作用

    我正在尝试在 MVVM 架构中实现 XamDataGrid 列可见性 但它似乎不起作用 我正在执行以下操作 为未绑定字段添加可见性属性
  • C# WPF - 应用程序图标 + ShowInTaskbar = False

    我创建了一个具有以下属性的自定义分层 WPF 窗口 允许透明度 True 在任务栏显示 False 背景 透明 最上面 True 图标 图标 ico 我已在 项目属性 gt 应用程序 选项卡下添加了 Icon ico 如果 ShowInTa
  • Windows 更新 KB4040972/73 导致 WPF 类出现黑色图像

    我有一个依赖于深度缩放图像 从 PNG 转换为各种比例的 JPG 金字塔 的应用程序 我们使用 DeepZoomTools dll 来实现 这依赖于PresentationCore dll 多年来一直运行良好 推出 KB4040972 和
  • 设置不可调整大小的 GridViewColumn

    我在 C WPF 应用程序中使用 ListView 和 GridViewColumn 对于某些列 我使用可见性管理器 this one https stackoverflow com a 9634769 6479770 但是 当第 1 列和
  • 使用 C# 从 UIElement 截取 WPF 屏幕截图 JPG

    我正在尝试从我的 WPF 应用程序的一部分创建 JPG 就像截图一样 只是个人的UIElements 我从这里开始 http www grumpydev com 2009 01 03 take wpf screenshots http ww
  • C# 组合框使用文本设置值

    我有一个组合框farmRegion我这样填写 private void fillRegionData DataTable dt new DataTable dt Columns Add ID typeof int dt Columns Ad
  • ListView选择单个项目,wpf

    我有一个列表视图 它的项目源是一个列表 我希望用户只选择一项 当我将列表视图的 SelectionMode 设置为 single 时 用户仍然可以选择多个项目 并且列表视图似乎变得疯狂并选择用户未选择的项目 看起来很奇怪 任何人都知道可能是
  • CanExecute 何时被调用?

    在演示中 我有一个按钮可以切换布尔字段isAsking 我创建了一个命令 该命令仅在以下情况下执行isAsking true 一旦我按下切换按钮 okButton IsEnable立即更改 这表明该命令发现了更改isAsking 我感到很困
  • 快速变化的集合 MVVM WPF - 高 CPU 使用率和 UI 几乎冻结

    我正在开发一个带有数据网格的应用程序 它显示某些正在运行的 Windows 进程 在我的示例 Chrome 进程中 当选中复选框时 数据网格会加载进程 要求 显示每个进程的名称 内存使用情况 私有工作集 的 实时 信息 就像在 Window
  • 文本框的自定义日期格式

    有关的 将3个文本框绑定在一起 相同的日期时间不同的格式 https stackoverflow com questions 35581427 binding 3 textboxes together same datetime diffe
  • WP7中加粗的ProgressBar,怎么样?

    我正在制作一个应用程序 它有一个计数器和一个代表剩余时间的进度条 因此如果计数器达到 50 则进度条值为 50 到目前为止一切顺利 我制作了一个计数器总计的进度条动画并开始 我的问题是 如何使进度条变粗 线条本身太小 我的应用程序的 主要吸
  • WPF 我应该如何评估属性路径?

    我正在编写一个自定义控件 并且我有一个字符串形式的属性路径 认为comboBox SelectedValuePath 代码中评估任意对象的该字符串的最佳方法是什么 显然我可以自己解析它 但这是一个黑客 我希望路径支持一切comboBox S
  • 如何在选项卡控件对象中禁用选项卡换行

    我正在 WPF C 中设计 GUI 并且使用Tab Control目的 我的tab control将包含很多选项卡 我想知道如何禁用对象的默认 包装 行为 基本上相反this https stackoverflow com question
  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的

随机推荐

  • 如何将 bash 输出捕获到 Mac OS X 剪贴板?

    是否可以将 bash 输出捕获到 OS X 剪贴板 The pbcopy http developer apple com Mac library documentation Darwin Reference ManPages man1 p
  • OpenJDK7 OS X 上的 file.listFiles() 在包含欧元符号的文件名上损坏

    似乎以下 file listFiles 在 OS X 上的 OpenJDK 7 上被破坏 此代码片段将打印 此文件有欧元符号 不存在 final String pathname System getProperty user home fo
  • 检查 Android/Java 上的端口是否打开

    我想检查端口是否打开 或者服务器是否正在其上运行 我已经以多种方式尝试过 例如 system bin ping 和 InetAddress 但如果我是对的 我无法使用这些 ping 特定端口 这次我用 DatagramSockets 的想法
  • 显示软键盘时出现对话框

    我有一个扩展的类Dialog 在那里面Dialog我有一个EditText and a ListView 当该对话框显示时 我可以调出软键盘 但我的问题是我们可以让对话框在显示软键盘时不弹出吗 我尝试改变softInputMode在布局参数
  • 使用 Mathematica 7 调试 Mathematica 5 上的工作程序

    我目前正在阅读 Mathematica 编程指南 并试图编写这本书的第一个程序 基本上 当我运行以下程序时 Plot3D Re Exp 1 x I y x 0 02 0 022 y 0 04 0 042 PlotRange gt 1 8 P
  • 如何使用 gradle 0.7+ 将 .so 文件添加到 android 库项目

    项目结构 应用程序项目 gt 取决于库项目 图书馆计划 有一个用于编译 jni 库的文件夹 jniLibs srcDirs libs 我尝试按照示例应用程序将以下内容添加到 build gradle 的 android 元素中https a
  • 在 JQuery 中获取 Node 的原始 HTML

    我用过 parent html 获取内部 html parent 但是我如何获取父级本身的 html 呢 用例是 我获取一个像这样的输入节点 var field input 我希望能够获取该节点的原始 html
  • 用户存在和身份验证

    我正在使用此代码使用服务在后台检测我的 Android 应用程序中的用户存在 final FirebaseAuth mAuth FirebaseAuth getInstance final FirebaseDatabase database
  • 动态规划和分而治之

    我正在读书动态规划的笔记 http www es ele tue nl education 5MC10 Solutions knapsack pdf 我遇到了以下评论 如果子问题不是独立的 即 子问题共享子子问题 然后分而治之算法重复解决公
  • Android 获取屏幕宽度和高度

    如何获取屏幕宽度和高度并在以下位置使用该值 Override protected void onMeasure int widthSpecId int heightSpecId Log e TAG onMeasure widthSpecId
  • 将分隔的字段合并为一个

    我在 Ada 工作 我有一个非常丑陋的类型 我无法修改 我想做一些易于使用的事情 类型是这样的 for T Ugly Type Alignment use 4 for T Ugly Type Size use 48 for T Ugly T
  • 比 SHA1 更好的散列

    我正在开发一个应用程序 我需要存储用户密码 所以我想将其存储在注册表的当前用户类中 但出于显而易见的原因我也想对其进行哈希处理 并且我我看到新闻报道称 SHA1 已被破解 标准 系统或 net 中是否有更好的 未破解的 哈希算法 SHA1
  • 使用 & 符号解析 XML

    我有一个包含 XML 的字符串 我只想将其解析为 Xelement 但它有一个 符号 我在使用 HtmlDecode 解析它时仍然遇到问题 有什么建议么 string test
  • 如何在 django 中实现 ldap 身份验证(无需管理员凭据)

    我的设置 Django 3 0 Python 3 8 django auth ldap我的组织中有 LDAP 服务器 Active Directory 服务器 我正在构建一个 Django 应用程序 它为所有用户提供一些操作 我知道 Dja
  • C 样式数组不再适用于记录

    我以前使用过这个人为的代码 record Foo int bar 这是利用C型数组 符号 它在 Java 15 中编译得很好 现在 突然之间 随着正式发布records在 Java 16 中 它不再编译 这是输出jshell jshell
  • 运行闪亮应用程序时访问/使用 R 控制台

    有谁知道在运行闪亮的应用程序时是否能够访问 R 控制台 如果可能的话 在后台运行闪亮的应用程序也会有帮助 我需要这个来操作 GlobalEnv 中的对象 这些对象在闪亮的应用程序中使用 并且必须使用命令行来完成 启动应用程序时 控制台很忙
  • 无法在简单示例中从 Spark ML 运行 RandomForestClassifier

    我尝试过运行实验RandomForestClassifier来自spark ml包 版本 1 5 2 我使用的数据集来自LogisticRegression中的示例Spark 机器学习指南 http spark apache org doc
  • Spring:在 Java 配置中定义自定义 @Transactional 行为

    我希望 Spring 回滚带有注释的方法上的事务 Transactional以防该方法抛出已检查的异常 等价于此 Transactional rollbackFor MyCheckedException class public void
  • RoR Net::HTTP post 错误未定义方法“bytesize”

    我目前正在反复用头撞墙 直到解决这个问题 我正在使用 ruby 1 9 3 p194 和 Rails 我正在尝试发出一个发布请求 我可以使用 Net HTTP post form 很好地完成该请求 但我不能在这里使用它 因为我需要在标头中设
  • 如何在 WPF 中隐藏组合框的项目

    有没有办法在 WPF 中隐藏组合框的项目 在我的用户控件中 有一个列表框 其中复选框项目绑定到 ObservableCollection 和一个带有组合框的数据网格