我正在尝试在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>
但它似乎无法奏效。 任何提示?
答案 0 :(得分:1)
您可以添加
ControlTemplate
,因此组合框会显示为 TextBox(没有边框,背景,切换按钮等)。但它行动起来 作为一个组合框(有下拉列表)。如果是,则不会显示下拉菜单 控制是否被破坏(因此它将显示为标签)
<ComboBox.Template>
<ControlTemplate>
<TextBlock Text="{Binding SelectedItem.MyText,RelativeSource={RelativeSource Mode=TemplatedParent}}"></TextBlock>
</ControlTemplate>
</ComboBox.Template>
答案 1 :(得分:0)
如果控件在某些条件下看起来像是另一个控件,ContentControl可以满足这种要求。您可以根据给定条件切换到适当的内容。
<ContentControl IsEnabled="True" /> // or IsEnabled="False"
然后通过Style ..
切换<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="true">
// combobox
</Trigger>
<Trigger Property="IsEnabled" Value="false">
// Label
</Trigger>
</Style.Triggers>
</Style>
答案 2 :(得分:0)
只需放置两个控件,ComboBox和Label。将每个的Visibility属性绑定到您的布尔值,指示是否应该启用ComboBox,以便在启用时显示一个,在禁用时显示另一个。