【问题标题】:Displayed text in WPF combo box with MenuItems and radio buttons带有 MenuItems 和单选按钮的 WPF 组合框中显示的文本
【发布时间】:2012-12-03 00:24:24
【问题描述】:

我有一个带有单选按钮和可检查菜单项的组合框。当我选择一个值时,会显示一些单选按钮的文本(包括/排除/忽略)。这似乎是随机的,并不总是发生,而是偶尔发生。

我想要的是 a) 根本不显示任何文本或 b) 我可以绑定一个字符串属性,该属性将包含所选内容的一些摘要。与普通组合框不同,此处显示的文本毫无意义,因为我确实选择了一些任意选项组合(不是列表中的单个值)

我尝试将 Text / SelecteValue 与属性绑定,但这不起作用。

<ComboBox Grid.Column="2" HorizontalAlignment="Left" Margin="0,4,0,0" Grid.Row="3" VerticalAlignment="Top" Width="125" SelectedValue="{Binding Settings.NameFilterTrx.Summary, UpdateSourceTrigger=PropertyChanged,  Mode=OneWay}">
  <MenuItem Header="Names with runway" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrx.NamesWithRunway, UpdateSourceTrigger=PropertyChanged}"/>
  <MenuItem Header="Names with number" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrxNamesWithNumber, UpdateSourceTrigger=PropertyChanged}"/>
  <MenuItem Header="Filtered elements as comments" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrx.FilteredAsComments, UpdateSourceTrigger=PropertyChanged}"/>
  <RadioButton GroupName="Group" Content="Exclude" IsChecked="{Binding Settings.NameFilterTrx.ModeExclude, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/>
  <RadioButton GroupName="Group" Content="Include" IsChecked="{Binding Settings.NameFilterTrx.ModeInclude, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/>
  <RadioButton GroupName="Group" Content="Ignore"  IsChecked="{Binding Settings.NameFilterTrx.ModeIgnore, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/>
</ComboBox>

如您所见,文本与所选值不对应。此外,仅随机显示单选按钮的文本,而不是菜单项。

PS:SelectedValue 的绑定是我获得定义值的途径之一。如果尝试过Text 以及没有绑定。

【问题讨论】:

  • 您为什么不使用扩展器来实现您的目标?它看起来像一个组合框,您不会被组合框的选定值所困扰。
  • 也许是个好主意,让我试试。
  • 还有一点,当 Expander 展开时,它可能会改变你的父容器的大小。所以我通常做的是把它放在一个 Grid 中,并指定它跨越几行和几列。然后我将 Expander 的 z-index 设置为一个较大的值。所以展开后的 Expander 会覆盖其他控件,不会改变父面板的大小。
  • 这很酷,我刚刚意识到这个问题并且答案已经存在;-))

标签: c# wpf combobox


【解决方案1】:

我认为您可以使用扩展器来实现您的目标。这个解决方案的问题是,当 Expander 展开时,它可能会改变你的父容器的大小。所以我通常做的就是把它放在一个 Grid 中,并指定它跨越几行和几列。然后我将 Expander 的 z-index 设置为一个较大的值。所以展开的 Expander 会覆盖其他控件,不会改变父面板的大小。 :)

【讨论】:

  • 我已经使用了您的方法,并且也尝试/使用了相同情况下的菜单(根据您的想法)。这两个概念都有优点和缺点,但在这种特殊情况下比组合框更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2018-06-18
  • 2015-07-15
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多