2009-02-11 29 views
6

Tôi đang cố gắng đặt trình kích hoạt để hiển thị khối văn bản khi giá trị tôi nhận được cho ô là một loại nhất định.Trình kích hoạt WPF

Tôi đã quản lý thành công để hiển thị hình ảnh trong cùng một tình huống, nhưng trong trường hợp này tôi không muốn hình ảnh, nhưng một số văn bản.

Đã nhận xét các dòng để test.try để làm cho nó hoạt động. Các nhận xét ra mã hoạt động! Văn bản textblock = xxx bên trong nó, không.

Đây là nỗ lực của tôi (s)

<wpfToolkit:DataGridTemplateColumn Header="P" Width="20"> 
    <wpfToolkit:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <!-- <DataTemplate.Triggers> --> 
      <!-- <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> --> 
      <TextBlock Text="XXX" /> 
      <!-- </DataTrigger> --> 
      <!-- <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> --> 
      <!-- <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> --> 
      <!-- </DataTrigger> --> 
      <!-- </DataTemplate.Triggers> --> 
     </DataTemplate> 
    </wpfToolkit:DataGridTemplateColumn.CellTemplate> 
</wpfToolkit:DataGridTemplateColumn> 
+0

ai đó đã ăn đoạn mã của bạn .. – Gishu

+0

vâng, tôi không thể tìm ra cách thêm một mã!? – mike

+0

đã khắc phục sự cố, cảm ơn Cameron! – mike

Trả lời

4

Đặt nội dung của DataTemplate thành TextBlock và đặt chế độ hiển thị dựa trên trình kích hoạt. Tôi không chắc chắn những gì DataTrigger thứ hai là cho vì nó là đề cập đến một tên mục tiêu đó không tồn tại trong phạm vi hiện tại, vì vậy tôi không biết làm thế nào điều này phù hợp trong.

<DataTemplate> 
    <TextBlock x:Name="block" Text="XXX" Visibility="Collapsed"/> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> 
      <Setter TargetName="block" Property="Visibility" Value="Visible"/> 
     </DataTrigger> 
     <!--<DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> 
      <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> 
     </DataTrigger>--> 
    </DataTemplate.Triggers> 
</DataTemplate> 
+0

Tuyệt vời, cảm ơn! Xem 'câu trả lời' của tôi ở dưới cùng! – mike

0

Bạn cần phải thay đổi kiểu của DataTemplate, dựa trên kích hoạt của bạn, từ một hình ảnh đến một TextBox.

<DataTemplate> 
    <ContentPresenter x:Name="Presenter" /> 

    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> 
      <Setter TargetName="Presenter" Property="Content"> 
       <Setter.Value> 
        <TextBlock Text="XXX" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> 
      <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 
+0

Thẻ 'DataGridTemplateColumn.Resources' không tồn tại trong không gian tên clr của không gian tên XML: Microsoft.Windows.Controls; assembly = WPFToolkit ' – mike

+0

close! 'System.Windows.Controls.TextBlock' không phải là giá trị hợp lệ cho 'Setter.Value'; các giá trị bắt nguồn từ Visual hoặc ContentElement không được hỗ trợ. – mike

1

Brilliant! Thanks heaps :)

Đây là những gì tôi đã kết thúc. Nếu PrecedenceIndicator = 1, display !, nếu PrecendenceIndicator = 2, hiển thị !!

<wpfToolkit:DataGridTemplateColumn Header="A" Width="20"> 
    <wpfToolkit:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock> 
       <TextBlock x:Name="block1" Text="&#x21;" Visibility="Collapsed"/> 
       <TextBlock x:Name="block2" Text="&#x21; &#x21;" Visibility="Collapsed"/> 
      </TextBlock> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> 
        <Setter TargetName="block1" Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> 
        <Setter TargetName="block2" Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </wpfToolkit:DataGridTemplateColumn.CellTemplate> 
</wpfToolkit:DataGridTemplateColumn> 
+0

Có vẻ tuyệt vời! Vui mừng nó đã làm việc ra. –

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