我认为这是可能的,但不知道该怎么做。我需要将一个类级别变量的值从数据模板内部传递给转换器。
<DataTemplate x:Key="ResponseItemTemplate">
<StackPanel Orientation="Horizontal" >
<StackPanel.Visibility>
<MultiBinding Converter="{StaticResource VisibilityConverter}">
<Binding Path="Key"/>
<Binding Path="CurrentLanguage"/>
</MultiBinding>
</StackPanel.Visibility>
<TextBox Width="200" Text="{Binding Value}" />
</StackPanel>
</DataTemplate>
“Key”值存在于数据模板的响应项上,因此正确传递,而CurrentLanguage是一个类变量,我无法将其正确传递给转换器。有什么想法吗?
答案 0 :(得分:1)
感谢回复,这是我最终需要使用的内容:
<Binding Path="DataContext.CurrentLanguage" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}"/>
答案 1 :(得分:0)
如果您将转换器定义为您拥有的资源,则可以在后面的代码中访问它。一旦你有了转换器,你就可以在它上面设置一个属性。
var myVisConverter = (VisibilityConverter)window.Resources["VisibilityConverter"];
myVisConverter.CurrentLanguage = ...
编辑好的,如果你试图从DataTemplate中访问父DataContext,那么有几个选项。最简单的方法是使用正确的DataContext命名控件,然后像这样绑定到该控件......
<Binding Path="DataContext.CurrentLanguage" ElementName="nameGivenToElement" />
Josh Smith用article编写了更多获取继承DataContexts的方法。
答案 2 :(得分:0)
您可以按如下方式使用绑定对象:
<Binding Source="{x:Static local:DataObject.MyData}" />
请参阅:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c94682e5-ad16-42f9-973f-fd7588a9c0b5。