Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF,将变量传递给数据模板内的转换器_Wpf_Xaml_Parameters_Converter - Fatal编程技术网

WPF,将变量传递给数据模板内的转换器

WPF,将变量传递给数据模板内的转换器,wpf,xaml,parameters,converter,Wpf,Xaml,Parameters,Converter,我认为这是可能的,但不知道怎么做。我需要将类级别变量的值从数据模板内部传递给转换器 <DataTemplate x:Key="ResponseItemTemplate"> <StackPanel Orientation="Horizontal" > <StackPanel.Visibility> <MultiBinding Converter="{StaticResource Vis

我认为这是可能的,但不知道怎么做。我需要将类级别变量的值从数据模板内部传递给转换器

<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是一个类变量,我无法将其正确传递给转换器。有什么想法吗?

如果您将转换器定义为您拥有的资源,您可以在代码隐藏中访问它。拥有转换器后,就可以在其上设置属性

var myVisConverter = (VisibilityConverter)window.Resources["VisibilityConverter"];
myVisConverter.CurrentLanguage = ...
编辑好的,如果您试图从DataTemplate中访问父DataContext,有几个选项。最简单的方法是使用正确的DataContext命名控件,然后像这样绑定到该控件

<Binding Path="DataContext.CurrentLanguage" ElementName="nameGivenToElement" />


Josh Smith写了一篇文章,介绍了获取继承数据上下文的更多方法。

您可以按如下方式使用绑定对象:

<Binding Source="{x:Static local:DataObject.MyData}" />


请参阅:。

感谢您的回复,这是我最后需要使用的:

 <Binding Path="DataContext.CurrentLanguage" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}"/> 

Hi Cameron,谢谢你的回复,我正在尝试使用MVVM模式,所以请避免使用代码隐藏。只需要一种方法来访问视图模型中的CurrentLanguage变量