隐藏ComboBox切换按钮?

时间:2017-03-06 15:21:52

标签: wpf xaml

我正在尝试在Style中制作通用<Window.Resources>,以便我可以在旁边设置ToggleButton的可见性。我无法找到解决此问题的具体问题。

我在下面创建了Style,但它似乎隐藏了项目中的每个ComboBox,即使我只在IsVisible为真时设置了触发器。

代码:这是我对风格的尝试,

<Window.Resources>
    <Style x:Key="ComboBoxToggleStyle" TargetType="{x:Type ToggleButton}">
        <Setter Property="Visibility" Value="{Binding Path=IsVisible, 
                    RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsVisible" Value="True">
                                <Setter Property="Visibility" Value="Hidden" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

这是项目中所有CombBox的主要风格,

<Style TargetType="{x:Type ComboBox}">
    <Setter Property="IsEditable" Value="False" />
    <Setter Property="Template">
       <Setter.Value>
          <ControlTemplate TargetType="{x:Type ComboBox}">  
              <Grid>                       
                <ToggleButton Grid.Column="1" 
                     Style="{StaticResource ComboBoxToggleStyle}">
                <....More styles below...>

任何帮助我指明正确方向的帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

您无法设置IsVisible属性,因为它没有公共设置器。并且您无法绑定Value的{​​{1}}属性,因此这不起作用。

您可以将要隐藏Setter的特定Style的{​​{1}}属性设置为ComboBox,而ToggleButton的模板缺少Style {1}}:

ToggleButton