Wpf 如果只有一个项目,如何隐藏组合框切换按钮?
我有一个WPF应用程序。在一个窗口中有一个组合框。如果只有一个项目,我想隐藏切换按钮并禁用组合框 我将如何实现这一点 我尝试了以下隐藏切换按钮的代码。但是运气不好 任何帮助都将不胜感激。谢谢Wpf 如果只有一个项目,如何隐藏组合框切换按钮?,wpf,xaml,combobox,visibility,togglebutton,Wpf,Xaml,Combobox,Visibility,Togglebutton,我有一个WPF应用程序。在一个窗口中有一个组合框。如果只有一个项目,我想隐藏切换按钮并禁用组合框 我将如何实现这一点 我尝试了以下隐藏切换按钮的代码。但是运气不好 任何帮助都将不胜感激。谢谢 <ComboBox x:Name="CList" ItemsSource="{Binding Path=C}" > <Style TargetType="{x:Type ToggleButton}" > <Sty
<ComboBox x:Name="CList" ItemsSource="{Binding Path=C}" >
<Style TargetType="{x:Type ToggleButton}" >
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Items.Count, ElementName=CList}" Value="1">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox>
您需要更改组合框的属性,并在其中实现触发器。您无法从外部访问模板中的控件
(您可以复制和修改,直接修改模板的一部分实际上是不可能的)您也可以始终使用转换器:
(对不起,我没有完全阅读你的问题) 转换器 XAML
更好的解决方案是,当项目计数为零时,用控件模板(仅包含textblock)替换组合框的模板 这是同样的xaml
<ComboBox Name="CList" ItemsSource="{Binding Path=C}"
SelectedItem="{Binding Path=CC}" VerticalAlignment="Center" Margin="0,0,10,0" >
<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>
我想隐藏切换按钮,而不是完全隐藏组合框。我也使用了此解决方案,效果很好,谢谢。我知道这是一篇老文章,但是当列表中的一个项目发生变化时,有没有办法更新文本框中的值?如果您已经为组合框创建了模板,这就不起作用了。@RandallDeetz和所有已经设置了模板的人,您可以在样式中添加BasedOn=“{StaticResource{x:Type ComboBox}”
(在TargetType后面)。这为我解决了问题
<Window
...
...
xmlns:converters="clr-namespace:WPFSandbox">
<Window.Resources>
<converters:ComboBoxItemCountToVisibilityConverter x:Key="ComboBoxItemCountToVisibilityConverter"/>
<converters:ComboBoxItemCountToEnabledConverter x:Key="ComboBoxItemCountToEnabledConverter"/>
</Window.Resources>
<StackPanel>
<ComboBox ItemsSource="{Binding C}" IsEnabled="{Binding Path=C.Count, Converter={StaticResource ComboBoxItemCountToEnabledConverter}}"/>
<ToggleButton Visibility="{Binding Path=C.Count, Converter={StaticResource ComboBoxItemCountToVisibilityConverter}}"/>
</StackPanel>
<ComboBox Name="CList" ItemsSource="{Binding Path=C}"
SelectedItem="{Binding Path=CC}" VerticalAlignment="Center" Margin="0,0,10,0" >
<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>