【问题标题】:WPF, passing variable to converter inside data templateWPF,将变量传递给数据模板内的转换器
【发布时间】:2010-11-14 08:43:27
【问题描述】:

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

<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>

“键”值存在于数据模板的响应项中,因此可以正确传递,而 CurrentLanguage 是一个类变量,我无法将其正确传递给转换器。有什么想法吗?

【问题讨论】:

    标签: wpf xaml parameters converter


    【解决方案1】:

    谢谢大家的回复,这才是我最后需要用到的:

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

    【讨论】:

      【解决方案2】:

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

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

      请参阅:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c94682e5-ad16-42f9-973f-fd7588a9c0b5

      【讨论】:

        【解决方案3】:

        如果您将转换器定义为您拥有的资源,您可以在后面的代码中访问它。一旦你有了转换器,你就可以在它上面设置一个属性。

        var myVisConverter = (VisibilityConverter)window.Resources["VisibilityConverter"];
        myVisConverter.CurrentLanguage = ...
        

        编辑好的,如果您尝试从 DataTemplate 中访问父 DataContext,有几个选项。最简单的方法是使用正确的 DataContext 命名控件,然后像这样绑定到该控件...

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

        Josh Smith 写了一个article,其中包含更多获取继承 DataContexts 的方法。

        【讨论】:

        • 嗨,Cameron,感谢您的回复,我很想使用 MVVM 模式,因此请避免使用代码隐藏。只需要一种方法来访问视图模型中的 CurrentLanguage 变量
        猜你喜欢
        • 2017-11-10
        • 2018-12-26
        • 2019-04-03
        • 2011-05-08
        • 2015-08-24
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 1970-01-01
        相关资源
        最近更新 更多