我正在UWP中使用DataGrid显示表。我希望使用VisualState.StateTriggers根据项源中的属性值切换行的可见性。
<Style x:Key="RowStyle" TargetType="controls:DataGridRow">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState>
<VisualState.StateTriggers>
<StateTrigger IsActive="{Binding Delete, Converter={StaticResource VisibilityToBoolConverter}}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState.StateTriggers>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Style>
<controls:DataGrid
x:Name="grid"
AutoGenerateColumns="False"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
RowStyle="{StaticResource RowStyle}"
Height="auto">
</controls:DataGrid>
ItemSource是以下项的ObvervableCollection
public class StudentsList {
public int Id;
public string Name;
public bool IsDeleted;
}
我希望只使用VisualState.StateTriggers折叠或禁用IsDeleted为true的所有行。
谢谢。
1条答案
按热度按时间1dkrff031#
我建议你用另一种方式来做这件事,比如代码隐藏,这会更容易。
1.查找数据网格中的任意列
1.在目标Row所在的列中查找元素
1.根据在步骤3中找到的元素查找目标Row
1.更改可见性。
下面是简单的代码: