2017-11-10 1 views
0

Datagridを設定して、RowHeaderの画像を表示して、リストされている各オブジェクトの状態を表示しようとしました。xamlからデータグリッドの行ヘッダーに画像を設定

これを実現するには、ビューモデルにIsTaskCompletedSuccessfullyのnullableブール値プロパティがあります。私のリソースで

、私は次のスタイルで画像を追加しました:I以下

  <DataGrid.Resources> 
       <Image x:Name="editImage" 
         x:Key="rowHeaderTemplate" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Center" 
         Width="16" 
         Margin="1,0"> 
        <Image.Style> 
         <Style TargetType="Image"> 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="true"> 
            <Setter Property="Source" Value="/RFiDGear;component/Resources/confirm.ico"/> 
           </DataTrigger > 
           <DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="false"> 
            <Setter Property="Source" Value="/RFiDGear;component/Resources/error.ico"/> 
           </DataTrigger > 
           <DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="{x:Null}"> 
            <Setter Property="Source" Value="/RFiDGear;component/Resources/wait.ico"/> 
           </DataTrigger > 
          </Style.Triggers> 
         </Style> 
        </Image.Style> 
       </Image> 
      </DataGrid.Resources> 

rowheaderstyleています

  <DataGrid.RowHeaderStyle> 
       <Style TargetType="{x:Type DataGridRowHeader}"> 
        <Setter Property="Content" Value="{StaticResource rowHeaderTemplate}"/> 
       </Style> 
      </DataGrid.RowHeaderStyle> 

は、残念ながら、それが唯一の最後の行/オブジェクト上で動作ではない追加すべての行何が私はここで恋しくなったのですか?

EDIT1:

私はRowHeaderTemplateにスタイルを編集しました。後で私は、データバインディングがこのように正しく動作していないことを理解しました。私のイメージソースは更新されません。実行時に出力ウィンドウにバインディングエラーはありません。

 <DataGrid.RowHeaderTemplate> 
      <DataTemplate> 
       <Image x:Name="editImage" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Center" 
         Width="16" 
         Margin="1,0"> 
       </Image> 

       <DataTemplate.Triggers> 
        <DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="True"> 
         <Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/confirm.ico"/> 
        </DataTrigger> 

        <DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="False"> 
         <Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/error.ico"/> 
        </DataTrigger> 

        <!--<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="{x:Null}"> 
         <Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/wait.ico"/> 
        </DataTrigger>--> 

       </DataTemplate.Triggers> 
      </DataTemplate> 
     </DataGrid.RowHeaderTemplate> 

答えて

0

これは機能しています。私はdatacontextを見つけるためにrelativesourceと協力しなければなりません。

  <DataGrid.RowHeaderTemplate> 
       <DataTemplate> 
        <Image x:Name="editImage" 
          VerticalAlignment="Center" 
          HorizontalAlignment="Center" 
          Width="16" 
          Margin="1,0"> 
        </Image> 

        <DataTemplate.Triggers> 
         <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}, Path=DataContext.IsTaskCompletedSuccessfully}" Value="True"> 
          <Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/confirm.ico"/> 
         </DataTrigger> 

         <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}, Path=DataContext.IsTaskCompletedSuccessfully}" Value="False"> 
          <Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/error.ico"/> 
         </DataTrigger> 

         <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}, Path=DataContext.IsTaskCompletedSuccessfully}" Value="{x:Null}"> 
          <Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/wait.ico"/> 
         </DataTrigger> 

        </DataTemplate.Triggers> 
       </DataTemplate> 
      </DataGrid.RowHeaderTemplate> 
関連する問題