自定义控件 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>
我创建了自定义 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>