2017-03-06 113 views
1

我想在<Window.Resources>中制作一个通用的Style,以允许我在侧面设置ToggleButton的可见性。我找不到解决这个问题的具体问题。隐藏ComboBox切换按钮?

我在下面做了这个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...> 

任何帮助点我在正确的方向将是伟大的。

+0

您ComboBoxToggleStyle的控件模板是空的。 ..这意味着ToggleButton没有“外观”。究竟何时以及如何隐藏ToggleButton? – mm8

+0

@ mm8,当我在实际的ComboBox XAML中设置IsVisible =“True”''''''''''''''''''''''''''''''''''''''我想禁用切换按钮。 – KyloRen

+0

IsVisible是您的自定义属性吗?因为内置的一个不能设置。它是只读的... – mm8

回答

1

您不能设置IsVisible属性,因为它没有公共setter。而且你不能绑定SetterValue属性,所以这不起作用。

什么,你可以设置特定ComboBoxStyle属性要在ToggleButton隐藏到Style有一个缺乏ToggleButton模板:

<ComboBox Style="{StaticResource styleWithoutToggleButton}" /> 
+0

好吧,我会看看我能做些什么,感谢你指出正确的方向。 – KyloRen

+1

只是想让你知道我用你建议的方式工作,它并没有跨越我的想法做出两种不同的风格,再次感谢您的帮助 – KyloRen

+0

嘿,我可以麻烦y ou进行私人聊天?干杯 – KyloRen