2011-08-06 32 views
7

Đây là khối chữ của tôi.WPF: Cha một thuộc tính kiểm soát khác trong Trình kích hoạt của một số kiểm soát

<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> 

Tôi thích tạo mã xaml có thể thay đổi proerpty của kiểm soát khác, như "imgAnother".

làm cách nào tôi có thể làm điều đó?

+0

Hình ảnh đó nằm ở đâu (hoặc kiểm soát ý bạn)? –

+0

Về cơ bản, tôi muốn thay đổi proeprty của một điều khiển khác trong cùng một cửa sổ. Nhưng cũng có thể, điều khiển có thể đặt trong tài nguyên ứng dụng, tài nguyên của cửa sổ, tài nguyên của điều khiển, quá. – mjk6026

Trả lời

12

Bạn phải tổng hợp nguồn và mục tiêu theo một cách nào đó.

Bạn có thể tạo một điều khiển tùy chỉnh chứa cả siêu liên kết/khối chữ và hình ảnh. Đó là cách ưa thích nếu bạn có một số khối hoạt động trong ví dụ đó.

Nếu bạn không thích điều này. Bạn có thể tạo điều khiển ẩn danh "tạm thời" như sau:

<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 ở trên sẽ nằm trong tài nguyên cửa sổ của bạn.

LƯU Ý: nó giống như một bản nhạc để theo dõi, hơn là một đoạn mã đầy đủ chức năng!

Trong cơ thể, bạn có thể tham khảo sự kiểm soát theo cách như vậy:

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

Hy vọng nó giúp.

Các vấn đề liên quan