2011-06-06 1135 views
18

我想在WPF中創建一個更大的複選框。更改複選框大小WPF

我發現,我需要做一個對照模板,其中一個例子是在這裏找到: http://msdn.microsoft.com/en-us/library/ms752319.aspx

如果我使用該代碼的複選框並不像默認的樣子。我想要做的就是更改邊框寬度&高度屬性。

我需要一個看起來完全像默認的控件模板,從那裏我只需更改寬度和高度。有誰知道我在哪裏可以找到一個?還是更好的方法?

回答

49

這個怎麼樣?

<CheckBox> 
    <CheckBox.LayoutTransform> 
     <ScaleTransform ScaleX="2" ScaleY="2" /> 
    </CheckBox.LayoutTransform> 
</CheckBox> 

如果整數值不是您想要的,您可以對ScaleX和ScaleY使用雙倍值。

+2

優雅的解決方案。我將其應用爲全球風格。對於那些走這條路線,請注意,它甚至可以縮放內容(複選框旁邊的文本或其他)。 – 2012-04-19 17:38:27

+0

這非常簡單! – jbmeta 2014-03-20 16:44:36

+0

如果您不希望字體的大小增加一倍,則可以使用CheckBox將文本放置在StackPanel的單獨TextBlock中。目前的問題是您可以控制字體大小,但框的大小不會改變。在我看來,它確實應該按比例縮放。默認情況下會出現奇怪的不匹配。 – 2018-02-14 13:42:48

0

您可以使用複選框的可視化樹,當您想要的元素存在時,請在運行時通過明確設置寬度和高度來更改它們。使用Peter Blois的snoop或一些等價物來查看是否有可以用FindName訪問的命名元素;如果不是,你將不得不猜測(例如,一些樣式可能有兩個邊框元素,你必須選擇一個),並明確地走可視化樹。

請記住,如果找不到要查找的元素,您的代碼將不會執行任何操作。

3

默認CONTROLTEMPLATES可以發現on MSDN(見Default WPF Themes鏈接)。

確保將各自的主題名稱空間添加到您的xaml文件以引用必要的theme controls

<theme:BulletChrome Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        RenderMouseOver="{TemplateBinding IsMouseOver}" 
        RenderPressed="{TemplateBinding IsPressed}" 
        IsChecked="{TemplateBinding IsChecked}"/> 

我不知道,如果你可以指定它一般,你可能需要添加引用過。

這裏的問題是,由於控件封裝了邊界,因此無法真正指定邊界大小。