2009-03-02 5 views
10

Tôi làm việc theo kiểu XAML cho các điều khiển của mình. Mã bên dưới là để thiết lập màu của chồng xếp chồng. Nó hoạt động tốt nhưng có cái gì khác tôi muốn làm. Nếu kích hoạt được kích hoạt tôi muốn thiết lập màu phông chữ cho tất cả các mục con bên trong stackpanel.WPF/XAML Style set Thuộc tính cho các mục con?

Hiện tại tôi chỉ có textblocks bên trong stackpanel và tôi biết tôi có thể dễ dàng tạo kiểu riêng cho một textbock. Nhưng nếu phong cách này được kích hoạt nó sẽ chỉ ảnh hưởng đến ONE và không phải tất cả các textblocks. Nhưng tôi muốn thay đổi tất cả các mục bên trong stackpanel ngay sau khi tôi nhận được một kích hoạt di chuột cho bảng điều khiển.

Điều này thậm chí có thể thực hiện được trong XAML hay tôi phải mã hóa sự kiện thường xuyên?

<Style x:Key="XStack" TargetType="StackPanel"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Color="White" Offset="0"/> 
       <GradientStop Color="SkyBlue" Offset="6"/>      
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <!-- Trigger--> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True" > 
      <Setter Property="Background" Value="SkyBlue"/> 
     </Trigger> 
    </Style.Triggers> 
</Style>  
+0

Cảm ơn! Làm việc như một giấc mơ! – TalkingCode

Trả lời

14

Thêm này để kích hoạt của bạn:

<Setter Property="TextElement.Foreground" Value="Blue"></Setter>

3

Giống như Olle nói, bạn có thể thiết lập các tài sản gắn liền TextElement.Foreground đến một giá trị tùy chỉnh. Đối với nút điều khiển con/UI trong cây thị giác, nếu thuộc tính không được thiết lập, WPF sẽ đi lên hệ thống phân cấp UI cho đến khi nó tìm thấy một giá trị và sử dụng nó. Điều này có nghĩa là tất cả các điều khiển con có thể chia sẻ một giá trị tài sản được xác định ở cấp độ gốc.

Điều này sẽ hoạt động đối với tất cả TextBlocks ... tuy nhiên nếu StackPanel của bạn chứa TextBox, màu văn bản của nó sẽ không bị ảnh hưởng. Nó sử dụng thuộc tính Foreground từ lớp cơ sở điều khiển ... Vì vậy, hãy chắc chắn kiểm tra nó với tất cả các kiểu phần tử con có thể.