自定义控件 BorderThickness

Custom Control BorderThickness

我创建了自定义 WPF 用户控件。问题是,有时我需要 BorderThickness 为 0,有时需要 BorderThickness 为 1。

<UserControl ...>
   <clay:TextBox x:Name="ClayTextBox" 
            BorderThickness="1" >
   </clay:TextBox>
</UserControl>

如果我在这样的 xaml 文档中使用控件:

<clay:TextBox x:Name="ClayTextBox" 
    BorderThickness="0" >
 </clay:TextBox>

...边界总是1。我该如何解决?

像这样将边框的 BorderThickness 属性绑定到 UserControls:

<UserControl x:Class="UseRcontrolWithProperty.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" x:Name="this"
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
          <Border BorderThickness="{Binding ElementName=this, Path=BorderThickness}"></Border>  
    </Grid>
</UserControl>

这样改变UserControl上的BorderBrush会改变内部边框的border brush。

在你的自定义控件模板样式中,你应该将父容器控件设置为边框,然后使用模板绑定来绑定边框粗细。在这里,我假设您的 CustomControl 继承了一个 BorderThickness 作为 属性.

的控件
<ControlTemplate TargetType="{x:Type clay:TextBox}">
    <Border BorderThickness="{TemplateBinding BorderThickness}">
          //Remaining xaml that makes up your custom control.
    </Border>
</ControlTemplate>