2017-07-07 8 views
0

私はアイテムの追加と削除を行うDataGridを持っています。これは私が現在持っているコードです:完全なDataGrid行を非表示にする方法は?

<DataGrid x:Name="ItemsToDo"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn Header="Info> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <DataTemplate.Triggers> 
          <DataTrigger Binding="{Binding IsDone}" Value="True"> 
           <Setter Property="Visibility" Value="Collapsed"/> 
          </DataTrigger> 
         </DataTemplate.Triggers> 
         <TextBlock Text="{Binding Description}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
      <DataGridTemplateColumn Header="Deadline"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <DataTemplate.Triggers> 
          <DataTrigger Binding="{Binding IsDone}" Value="True"> 
           <Setter Property="Visibility" Value="Collapsed"/> 
          </DataTrigger> 
         </DataTemplate.Triggers> 
         <TextBlock Text="{Binding InputDeadline}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 

が、行の両方の列が縮小に設定されている場合、行は消えませんが、それは次のようになります。 エントリ2ではありません完全に私はビューモデルを使用せずに、この行を削除するにはどうすればよい

enter image description here

を行って?可視性より優れた特性はありますか?

答えて

0

セルのテンプレートからDataTriggerを削除し、個別のセルではなく行全体に視認性トリガを適用する必要があります。例えば

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False"> 
    <DataGrid.RowStyle> 
     <Style TargetType="DataGridRow"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsDone}" Value="True"> 
        <Setter Property="Visibility" Value="Collapsed"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.RowStyle> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn Header="Info"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Description}"/> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
     <DataGridTemplateColumn Header="Deadline"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding InputDeadline}"/> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 
関連する問題