1. 定义一个属性DependencyProperty(在对应控件的代码文件中)
/// <summary>
/// Register the Selected to the DependencyProperty
/// </summary>
public static readonly DependencyProperty SelectedProperty =
DependencyProperty.Register("Selected", typeof(Boolean), typeof(UserControl1), new PropertyMetadata(false));
2. 定义一个Selected属性
/// <summary>
/// Gets or sets the selected value
/// </summary>
public bool Selected
{
get
{
return (Boolean)this.GetValue(SelectedProperty);
}
set
{
this.SetValue(SelectedProperty, value);
}
}
3. 在ResourceDictionary中使用该属性
a. 引入控件的命名空间(当空件与ResourceDictionary文件位于同一个工程中时,不需要assembly)
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:Test.MyNameSpace">
b. 引入控件的命名空间(当空件与ResourceDictionary文件位于不同的工程中时)
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:Test.MyNamespace;assembly=TestMyLib">
c. 在Trigger 中使用该属性
<Style x:Key="TestSelectStyle" TargetType="{x:Type my:UserControl1}">
<Trigger Property="Selected" Value="True">
<Setter Property="Background" Value="{StaticResource MyResourceKey}" />
<Setter Property="Border.BorderThickness" Value="2,2,2,2" />
<Setter Property="BorderBrush" Value="#235B92" />
</Trigger>
</Style>