UserControl的trigger

1. 例子:targetType设置好就能够直接使用 user control中定义的 dependency property

<UserControl x:Class="myUserControl" x:Name="thisControl">

<UserControl.Resource/>

<UserControl.Style>

      <Style TargetType="{x:Type local:myUserControl}">

     <Setter Property="Background" Value="yellow" />

     <Style.Triggers>

          <MultiTrigger>

          <MultiTrigger.Conditions>

               <Condition Property="IsExpanded" Value="True"/>

               <Condition Property="IsMouseOver" Value="True"/>

               </MultiTrigger.Conditions>

               <SetterProperty="Background" Value="Blue"/>

          </MultiTrigger>

</Style.Triggers>

</Style>

</UserControl.Style>

2. 对于user control内部的element,要使用user control的property,最好就用binding,如:

< ToggleButton IsChecked="{Binding ElementName=thisControl,Path=IsExpanded,Mode=TwoWay}" />

3. Style.Trigger 中的triiger不能使用SourceName,setter 不能用TargetName,这些只能在template中使用,因为template中才有可视树。在template中例子如下:

 <DataTemplate.Triggers >

<MultiTrigger>

<MultiTrigger.Conditions>

<Condition Property="IsMouseOver" Value="True"/>

<Condition SourceName="MoreTextBlock" Property="Visibility" Value="Visible"/>

</MultiTrigger.Conditions>

<Setter TargetName="OneTextBox" Property="MaxLines" Value="200" />

<Setter TargetName="OneTextBlock" Property="Text" Value=""/>

</MultiTrigger>

</DataTemplate.Triggers>

 

posted on 2008-11-28 13:11  oyl  阅读(434)  评论(0编辑  收藏  举报

导航