2015-01-28 4 views
0

Я создал пользовательский пользовательский элемент управления WPF. Проблема заключается в том, что иногда мне нужно BorderThickness 0 и иногда BorderThickness из 1.Пользовательский контроль BorderThickness

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

Если я использую элемент управления в XAML документе, как это:

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

... граница всегда 1. Как я могу это решить?

ответ

2

В вашем настраиваемом шаблоне шаблона вы должны установить родительский элемент управления контейнером как границу, а затем использовать привязку шаблона для привязки толщины границы. Здесь я предположил, что ваш CustomControl наследует элемент управления, который имеет свойство BorderThickness как свойство.

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

Попросите границы Свяжите его BorderThickness propety к 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> 

таким образом изменяя BorderBrush на UserControl изменит границы кисти внутренней границы.