将模板列的可见性绑定到基础数据

时间:2012-09-17 19:21:25

标签: c# wpf wpf-controls wpfdatagrid

我正在试图弄清楚如何将DataGrid模板列的可行性绑定到可观察集合,该集合是数据网格的datacontext。注意:虽然我是初学者,所以你可能需要像10年前的那样解释......

我知道这与stackoverflow有关,但我似乎仍然无法理解。

我在转换器中有一个断点但是当数据添加到observable集合时它永远不会被击中...

我希望这是有道理的...... 非常感谢

                    <DataGrid AutoGenerateColumns="False" AlternatingRowBackground="LightBlue" ItemsSource="{Binding historyColl}" Margin="0,75,6,26" Name="historyDataGrid" FontSize="12" HorizontalAlignment="Right" Width="381">
                    <DataGrid.Columns>
                        <DataGridTemplateColumn Header="Date (dd-mm)" Width="80*">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Date}" Background="{Binding Converter={StaticResource TradedBackground}}"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

                        <DataGridTemplateColumn Header="Test" Width="50" Visibility="{Binding RelativeSource={x:Static RelativeSource.Self}, 
                                Path=FrameworkElement.DataContext, Converter={StaticResource booleanToVisiblityConverter}}">
                           <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Test}"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

                    </DataGrid.Columns>
                </DataGrid>

1 个答案:

答案 0 :(得分:0)

我会加入问题下方的讨论,但我没有足够的意义去做。 我很确定Path=FrameworkElement.DataContext是问题所在。转换器需要一个布尔值,但却得到一个DataContext。

我希望DataContext本身中的bool类型的属性可以使用转换器绑定可见性。

在窗口资源中定义转换器就好了。