假设我有一个datagrid,其中有2列,每列1个扩展器。
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Expander Style="{StaticResource PlusMinusExpanderStyle}"
ToolTip="Rule Details"
Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.IsRuleDetailsExpanderVisible, Converter={StaticResource BooleanToVisibilityConverter}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
>
<Expander.IsExpanded>
<Binding RelativeSource="{RelativeSource AncestorType={x:Type DataGridRow}}"
Path="DetailsVisibility"
Mode="TwoWay">
<Binding.Converter>
<converters:BooleanToVisibilityDataGridRow FalseToVisibility="Collapsed" />
</Binding.Converter>
</Binding>
</Expander.IsExpanded>
</Expander>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Ellipse Grid.Column="1"
Width="15"
Height="15"
Fill="{Binding Status,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource ColorToBrushConverter}}" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Add Rule">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="22" Height="22"
ToolTip="Add Rule"
BorderThickness="0"
Background="Transparent"
Style="{StaticResource TransparentStyle}"
IsEnabled="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.IsMonitorDataGridColumnEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.AddRuleCommand}"
CommandParameter="{Binding ElementName=MonitorDataGrid, Path=SelectedItem}">
<Image Source="/OBDApplication;component/Images/addRule1.png"
Width="17"
Height="17"
ToolTip="Add Rule" />
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
现在,我必须控制每个扩展器的可见性。单击“添加规则”按钮后,将出现一个新窗口,该窗口需要一些输入并将数据添加到集合中。如果规则中存在任何数据,则只有我应该显示扩展器图标。
所以,我绑定了一个布尔属性来控制可见性,并且在将规则添加到集合之后,我将该布尔属性设为true。但是问题在于,即使行中有记录,扩展器对于每一行都是可见的,这会导致布尔值返回true。
那我如何控制每行扩展器的可见性?
答案 0 :(得分:0)
我已经用自己的东西修复了。
在模型本身中创建一个布尔属性,以便它将检查每个项目。然后将扩展器的可见性与该模型的属性绑定。
我为扩展器更新的xaml代码如下:
Posts = LoadArrayList("PostsList", PostsModel.class);
我还在寻找其他方法。