2017-07-07 92 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>