日期:2014-05-17  浏览次数:20892 次

WPF,看下这个控件模板
为了搞清楚BorderThickness属性,剪辑了一段简单的Button模板:


<Window.Resources>
    <Style TargetType="Button">         
        <Setter Property="Border.BorderThickness">
            <Setter.Value>
                <Thickness>5,5,5,5</Thickness>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>


问题:代码中设置BorderThickness时,写的是Border.BorderThickness,为什么要这么写呢?和直接写BorderThickness有什么区别吗?
我看到某个控件的标准模板中,有一部分就是这么写的

------解决方案--------------------
你可以重新修改Button的控件模板,你修改的控件模板删除Border看看与原来的button控件对比下有什么区别的
------解决方案--------------------
引用:
Quote: 引用:

你可以重新修改Button的控件模板,你修改的控件模板删除Border看看与原来的button控件对比下有什么区别的

没有区别啊,就是边框宽度,我就是不明白,为什么要写成Border.BorderThickness,就算是写成
TextBox.BorderThickness也照样运行

Border代表边框了,BorderThickness代表边框的粗细,然而BorderThickness代表边框区域的尺寸,具体参考MSDN介绍了:http://msdn.microsoft.com/zh-cn/library/cc917851(v=VS.95).aspx 和 http://msdn.microsoft.com/zh-cn/library/system.windows.controls.border.borderthickness(v=VS.95).aspx
------解决方案--------------------
你把 <Thickness>5,5,5,5</Thickness>改成 <Thickness>5,10,5,10</Thickness>看看有没有变化。
------解决方案--------------------
引用:
Quote: 引用:

你把 <Thickness>5,5,5,5</Thickness>改成 <Thickness>5,10,5,10</Thickness>看看有没有变化。

有变化啊,上、下边框变粗了。为什么要写成Border.BorderThickness,不写成BorderThickness呢?


这就是了,5,10,5,10,这样写,可以分别控制边框的左、上、右、下的边框宽度。如果写成BorderThickness,则每条边框的宽度都是一样,没法分别控制。
------解决方案--------------------