【发布时间】:2014-08-15 17:09:29
【问题描述】:
我在包含组合框的数据网格中实现了一个列。为了在列表仅包含一个值时显示文本框而不是组合框,我使用了这篇文章中的解决方案:
How to hide combobox toggle button if there is only one item?
但是,当列表中的那个值发生变化时,它不会在文本框中更新。当然,我已经实现了 INotifyPropertyChanged,只要列表中有多个项目(换句话说,当显示组合框时),它就可以工作,但 TextBlock 中的值永远不会更新。
编辑:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="CList" ItemsSource="{Binding Values, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=SelectedValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="0" BorderBrush="Transparent"
Background="Transparent">
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}" >
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Items.Count, ElementName=CList}" Value="1">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{Binding Items[0], ElementName=CList}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
【问题讨论】:
-
显示你试过的代码
-
你去。我没有发布代码,因为它与我发布的链接中的完全一样。