C#WPF - 已禁用ComboBox应该看起来像标签

时间:2015-12-18 07:15:58

标签: c# wpf combobox styles

我正在尝试在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>

但它似乎无法奏效。 任何提示?

3 个答案:

答案 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,以便在启用时显示一个,在禁用时显示另一个。