【发布时间】: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