C#WPF-禁用的组合框应该看起来像标签
本文关键字:看起来 标签 组合 C#WPF- | 更新日期: 2023-09-27 18:27:25
当wpf中的组合框被禁用时,我正试图更改它的样式。它应该看起来像一个纯文本(标签)。
这是我的代码:
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="Black" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="0"></Setter>
<Setter Property="Background" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
但它似乎不起作用。有什么提示吗?
您可以添加
ControlTemplate
,因此组合框将显示为TextBox(没有边框、背景、切换按钮等)。但它起作用作为组合框(具有下拉列表)。如果控制被取消(因此它将像标签一样显示)
<ComboBox.Template>
<ControlTemplate>
<TextBlock Text="{Binding SelectedItem.MyText,RelativeSource={RelativeSource Mode=TemplatedParent}}"></TextBlock>
</ControlTemplate>
</ComboBox.Template>
如果控件在某些条件下看起来像另一个控件,则ContentControl可以满足这种要求。您可以根据给定的条件切换到适当的内容。
<ContentControl IsEnabled="True" /> // or IsEnabled="False"
然后通过样式切换。。
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="true">
// combobox
</Trigger>
<Trigger Property="IsEnabled" Value="false">
// Label
</Trigger>
</Style.Triggers>
</Style>
只需放置两个控件,即ComboBox和Label。将每个的Visibility属性绑定到布尔值,指示是否应启用ComboBox,以便一个在启用时可见,另一个在禁用时可见。