【发布时间】:2013-03-08 02:12:27
【问题描述】:
我不确定我的问题标题是否完全代表我的问题,我会尽力解释:
我有一个网格单元 DataTemplate:(网格属于第三方公司,但对我的问题并不重要)
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding OpenLinkCommand}">
<Hyperlink.ToolTip>
<TextBlock Text="{Binding Data.MapLink}"/>
</Hyperlink.ToolTip>
<TextBlock Text="{Binding Data.MapLink}" TextDecorations="underline">
</Hyperlink>
</TextBlock>
</DataTemplate>
我想让这个 DataTemplate 显示一些超链接(“Data.MapLink”是包含链接值的对象),每次点击这个链接都会触发命令“OpenLinkCommand”。
问题是“Data.MapLink”和“OpenLinkCommand”位于不同的dataContext中,然后我必须选择以下选项之一:
保留超链接 dataContext 不变 - 该命令将不起作用,超链接将获取 Data.MapLink 值。
将超链接 dataContext 更改为命令 datacontext - 命令将起作用,但超链接名称将为空。
遗憾的是我没有将这些项目放在同一个 dataContext 中的选项,所以我必须找到一种方法来告诉命令它的 dataContext 是“X”并告诉超链接它的 dataContext 是“Y”。
我希望我的问题很清楚 我该如何解决这个问题?
【问题讨论】:
-
第二个数据上下文来自哪里?它是否绑定到一个元素,因为您可以将元素数据上下文绑定到另一个元素并设置相对源。如果您可以访问视图模型中的两个数据上下文(假设您使用的是视图模型),则可以拉入另一个命令。
-
在 Binding 中使用 RelativeSource 来查找正确的数据上下文
-
我刚刚向 Microsoft 报告了该错误(另一次?):connect.microsoft.com/VisualStudio/feedback/details/1398835/…
标签: wpf mvvm datacontext