WPF 模板和绑定到 GridView 中的 DataContext
我正在尝试在 RadGridView 中创建一系列绑定列,并使用模板在其中两列中创建超链接。这基本上是我所拥有的:
<telerik:GridViewDataColumn IsReadOnly="True" UniqueName="Distributor" DataContext="{Binding Distributor}" CellTemplate="{StaticResource linkTemplate}"/>
并且,
<DataTemplate x:Key="linkTemplate">
<TextBlock>
<Hyperlink DataContext={TemplateBinding DataContext} Click="Hyperlink_Click">
<TextBlock Text="{Binding Name}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
RadGridView 本身绑定到一组 DistributorContainer 对象,这些对象除其他外还具有 Distributor 属性。 linkTemplate 直接引用Distributor 对象中的属性,因此需要将超链接的数据上下文设置为Distributor。
不幸的是,超链接的数据上下文是DistributorContainer 对象。我在绑定到分销商列表的列表上使用 linkTemplate(以及 Hyperlink_Click 处理程序),并且我真的很想重新使用此模板,因为它基本上是相同的东西。
为什么模板没有通过到 GridViewDataColumn 的 TemplateBinding 获取 Distributor 作为其 DataContext?
I'm trying to create a series of bound columns in a RadGridView, and I'm using a template to create hyperlinks in two of the columns. Here is basically what I have:
<telerik:GridViewDataColumn IsReadOnly="True" UniqueName="Distributor" DataContext="{Binding Distributor}" CellTemplate="{StaticResource linkTemplate}"/>
and,
<DataTemplate x:Key="linkTemplate">
<TextBlock>
<Hyperlink DataContext={TemplateBinding DataContext} Click="Hyperlink_Click">
<TextBlock Text="{Binding Name}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
The RadGridView itself is bound to a set of DistributorContainer objects that have, among other things, a Distributor property. The linkTemplate refers directly to properties in the Distributor object, so the hyperlink's datacontext needs to be set to the Distributor.
Unfortunately, the Hyperlink's data context is the DistributorContainer object. I'm using the linkTemplate (as well as the Hyperlink_Click handler) on lists that bind to lists of Distributors, and I'd really like to re-use this template since it's basically the same thing.
Why isn't the template getting the Distributor as its DataContext through the TemplateBinding to the GridViewDataColumn?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下是如何实现此目的的示例:
XAML
C#
Here is an example how to achieve this:
XAML
C#