如何更改显示与DataGrid中的ItemsSource不匹配的内容?

时间:2014-01-24 17:54:33

标签: wpf datagrid itemssource

我有一个DataGrid,DataContext是一个包含许多属性的对象列表。

所有列都绑定到所述对象类型的不同属性。

如果另一个bool属性设置为“true”,我只关心一个text属性 - 当它为“false”时我根本不想显示text属性。

你有什么方法可以建议吗?

我在考虑以下几点:

foreach (var cur in DG.ItemsSource) {
 if (!cur.BoolThatSignifiesIfICareAboutOtherProperty) {
  //some code that will make the cell for cur.PropertyIMayOrMayNotCareAbout
  //appear empty even though that property does have a value that the column
  //is bound to
 }
}

**编辑**

有人建议我使用数据触发器。所以这就是我尝试过的,但它也行不通。它也没有给出任何错误,所以我不知道我做错了什么。

这是我到目前为止所拥有的。但它不起作用。请让我知道我做错了什么:

 <DataGridTextColumn Header="EndDate" Binding="{Binding Path=EndDate, Converter={StaticResource DT2D}}">
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="{x:Type DataGridCell}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=DoICare}" Value="False">
                                <Setter Property="Content" Value=" " />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>

1 个答案:

答案 0 :(得分:0)

所以这就是我解决它的方法 - 我只是错了一些标签:

 <DataGridTextColumn Header="EndDate" Binding="{Binding Path=EndDate, Converter={StaticResource DT2D}}">
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=DoICare}" Value="False">
                                <Setter Property="Visibility" Value="Hidden" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>