【问题标题】:Bind Visability of Template Column to underlying data将模板列的可见性绑定到基础数据
【发布时间】:2012-09-17 19:21:24
【问题描述】:

我试图弄清楚如何将 DataGrid 模板列的可行性绑定到作为数据网格的数据上下文的可观察集合。注意:虽然我是这个东西的初学者,所以你可能必须像向 10 岁的孩子一样解释......

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

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

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

                    <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>

【问题讨论】:

  • 你没有忘记在资源中定义你的booleanToVisiblityConverter 吗?另外,我将只使用Visibility="{Binding PathToVisibilityFlagInDataContext, Converter={StaticResource booleanToVisiblityConverter}}" 和适当的PathToVisibilityFlagInDataContext。 (您似乎也忘记了这一点。)
  • 我确实定义了转换器,但它是在窗口资源中完成的......我在哪里把它放在 C# 端呢?PathToVisibilityFlagInDataContext
  • 我基本上希望转换器允许我访问 ObservableCollection 的第一行,然后我可以从那里设置可见性..
  • 好吧,如果您的转换器已准备好获取整个集合,则不需要 PathToVisibilityFlagInDataContext
  • 你确定DataGridTemplateColumn的数据上下文是你所期望的吗?我会尝试RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}DataGrid 应该具有您期望的数据上下文。您是否尝试使用 snoop 检查数据上下文?

标签: c# wpf wpf-controls wpfdatagrid


【解决方案1】:

我会加入问题下方的讨论,但我没有足够的分数来这样做。 我很确定Path=FrameworkElement.DataContext 是问题所在。转换器需要一个布尔值,但获取的是一个 DataContext。

我希望 DataContext 本身中有一个 bool 类型的属性,您可以使用转换器将可见性绑定到该属性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多