2011-09-06 9 views
7

Làm việc với Infragistics XamDataGrid Tôi gặp phải một tình huống mà tôi muốn áp dụng kiểu chỉ khi một thuộc tính nhất định được đặt. Tuy nhiên, tôi nghĩ rằng đây là một câu hỏi WPF/phong cách chung hơn xamDataGrid cụ thể.Áp dụng kiểu dựa trên giá trị thuộc tính

Kiểu dưới đây là những gì tôi hiện đang sử dụng. Nó thêm hộp kiểm vào vùng chọn bản ghi:

<Style TargetType="{x:Type igDP:RecordSelector}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type igDP:RecordSelector}"> 
       <CheckBox x:Name="HeaderCheckBox" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          IsChecked="{Binding Path=DataItem.IsChecked}"> 
       </CheckBox> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsFilterRecord" Value="True"> 
        <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/> 
        </Trigger> 
        <Trigger Property="IsAddRecord" Value="True"> 
        <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

TargetType là RecordSelector. Nếu bản ghi là hàng bộ lọc hoặc hàng thêm bản ghi, tôi không muốn hiển thị hộp kiểm.

Tôi muốn thay đổi điều này để nếu bản ghi là hàng thêm bản ghi (IsAddRecord == true), thì không áp dụng kiểu nào cả. Tôi muốn thêm hàng bản ghi để giữ lại kiểu mặc định của nó.

Điều này có khả thi không?

Trả lời

9

Bạn không thể ngăn chặn Style khỏi bị aplied từ bên trong phong cách riêng của mình, nhưng bạn có thể ngăn chặn Setters nó khỏi bị áp dụng sử dụng Style.Triggers:

<Style TargetType="{x:Type igDP:RecordSelector}"> 
    <Style.Triggers> 
     <Trigger Property="IsAddRecord" Value="False"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type igDP:RecordSelector}"> 
         <CheckBox x:Name="HeaderCheckBox" 
            HorizontalAlignment="Center" 
            VerticalAlignment="Center" 
            IsChecked="{Binding Path=DataItem.IsChecked}"> 
         </CheckBox> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsFilterRecord" Value="True"> 
          <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

Perfect! Cảm ơn rất nhiều. – Flack