我已经创建了自定义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.我该如何解决?
答案 0 :(得分:3)
在自定义控件模板样式中,应将父容器控件设置为边框,然后使用模板绑定绑定边框粗细。在这里,我假设您的CustomControl继承了一个将BorderThickness作为属性的控件。
<ControlTemplate TargetType="{x:Type clay:TextBox}">
<Border BorderThickness="{TemplateBinding BorderThickness}">
//Remaining xaml that makes up your custom control.
</Border>
</ControlTemplate>
答案 1 :(得分:0)
让你的边界将其BorderThickness属性绑定到这样的UserControl:
<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将改变内部边框的边框画笔。