2011-08-06 56 views
7

這是我的文本塊。WPF:在某些控件的觸發器中查找另一個控件的屬性

<Image x:Name:imgAnother/> 

    <TextBlock> 
     this is my text block 
     <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Setter Property="TextDecorations" Value="None"/> 
       <Style.Triggers> 
        <Trigger Property="TextBlock.IsMouseOver" Value="True"> 
         <Setter Property="Foreground" Value="RoyalBlue"/> 
         <!--I like to insert a code at here that changes another control's property...--> 
        </Trigger> 
        <Trigger Property="TextBlock.IsMouseOver" Value="False"> 
         <Setter Property="Foreground" Value="#FF808080"/> 
         <!--..and this line too.--> 
        </Trigger> 
       </Style.Triggers>      
      </Style> 
     </TextBlock.Style> 
    </TextBlock> 

我喜歡製作一個xaml代碼,它可以改變另一個控件的proerpty,比如「imgAnother」。

我該怎麼做?

+0

那個圖像(或您所說的控件)在哪裏? –

+0

基本上,我想在同一個窗口中更改另一個控件的proeprty。而且,控件也可以放置在應用程序資源,窗口資源,控件資源中。 – mjk6026

回答

12

您必須以某種方式聚合源和目標。

您可以創建包含超鏈接/文本塊和圖像的自定義控件。如果您在此類示例中具有多個塊,則這是首選方式。

如果你不喜歡這個。您可以創建一個「臨時」匿名控件,如下所示:

<ControlTemplate x:Key="myCtl" TargetType="ContentControl"> 
    <StackPanel> 
    <Image x:Name="img"/> 
    <ContentPresenter x:Name="ctr" /> 
    </StackPanel> 

    <ControlTemplate.Triggers> 
        <Trigger SourceName="ctr" Property="IsMouseOver" Value="True"> 
         <Setter TargetName="ctr" Property="Foreground" Value="RoyalBlue"/> 
         <!--I like to insert a code at here that changes another control's property...--> 
        </Trigger> 
        <Trigger SourceName="ctr" Property="IsMouseOver" Value="False"> 
         <Setter TargetName="ctr" Property="Foreground" Value="#FF808080"/> 
         <!--..and this line too.--> 
        </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

上述xaml將駐留在您的Window資源中。

注意:它跟一個跟蹤功能非常相似,而不是一個功能完整的代碼片段!

在身上,你可以參考控制在這樣的方式:

<ContentControl Template="{StaticResource myCtl}" Content="this is my text block" /> 

希望它能幫助。

相關問題