2015-12-14 53 views
0

我有一個CheckBox控制在我的一個窗口,只是在那裏顯示是否是真/假 - 我不希望我的用戶與它進行交互。如何樣式複選框刪除邊框

默認情況下,設置IsEnabled="False"灰色框,這很好。不過,我認爲如果我保留一個堅實的複選標記並刪除邊框,它會更整潔,更明顯。

起初我設置了BorderThickness="0",這似乎什麼都不做。於是我去了,而不是風格,並把這個在我的資源字典:

<Style x:Key="BorderlessCheckBox" TargetType="{x:Type CheckBox}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="CheckBox"> 
       <BulletDecorator Background="Transparent"> 
        <BulletDecorator.Bullet> 
         <Border Background="#FFAEB3B9" BorderThickness="0" /> 
        </BulletDecorator.Bullet> 
       </BulletDecorator> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

這完全刪除文本框 - 盡我可以告訴我無意中做覆蓋整個風格,因爲我沒有指定檢查作爲我的風格的一部分,沒有檢查出現。

是否有直接的方式從文本框中刪除邊框而無需重新設計整個控件的樣式?

編輯:我也嘗試了borderThickness:

enter image description here

回答

1

你可以簡單地通過設置BorderThickness酒店需要從CheckBox刪除邊框。

<CheckBox Content="Test" BorderThickness="0" /> 

如果你想編輯控件模板,最簡單的方法就是打開在混合解決方案,右鍵單擊控制和編輯模板。

Edit template

鑽到控件樹,你會發現,你要隱藏的checkBoxBorder控制。在這裏,你看到BorderThickness來自一個TemplateBinding(因此從性質上CheckBox本身):

<Border x:Name="checkBoxBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 
    <Grid x:Name="markGrid"> 
     <Path x:Name="optionMark" Data="F1 M 9.97498,1.22334L 4.6983,9.09834L 4.52164,9.09834L 0,5.19331L 1.27664,3.52165L 4.255,6.08833L 8.33331,1.52588e-005L 9.97498,1.22334 Z " Fill="{StaticResource OptionMark.Static.Glyph}" Margin="1" Opacity="0" Stretch="None"/> 
     <Rectangle x:Name="indeterminateMark" Fill="{StaticResource OptionMark.Static.Glyph}" Margin="2" Opacity="0"/> 
    </Grid> 
</Border> 
+0

謝謝 - 我不知道你會這麼輕鬆地創建模板副本。爲了證明我不是一個懶惰的屁股,我添加了一張屏幕截圖,顯示我嘗試了BorderThickness,它沒有做任何事情。我使用的是Metro風格 - 我認爲由於某種原因,它必須重寫該屬性的控制權。 –