【问题标题】:wpf shared ResourceDictionary file parameters?wpf共享ResourceDictionary文件参数?
【发布时间】:2010-06-30 21:05:06
【问题描述】:

如果所有样式和转换器都存储在共享资源字典文件 (styles.xaml) 中,并且该文件可在各种窗口中使用。

是否可以将参数传递给该文件,并将该参数传播给转换器?

我正在寻找一种方法来传递 "origin" 类型参数,以便转换器可以知道它们是从哪个位置使用的?只是提示当前哪个窗口/网格正在使用转换器..

【问题讨论】:

  • 不确定共享资源字典中的“转换器”是什么意思。当我在 XAML 和 WPF 的上下文中看到这个术语时,我想到了 IValueConverter。是别的吗?
  • 是的。 iValue 转换器。 Convert 有一个可选参数。我希望能够通过资源字典文件来传递它

标签: wpf styles styling


【解决方案1】:

有关带参数的转换器,请参阅本文。我假设您在 Resource 字典中定义了 Converter 资源。

http://www.switchonthecode.com/tutorials/wpf-tutorial-binding-converters

【讨论】:

  • 是的,这篇文章是我发现转换器参数的方法。虽然它没有提到我的问题的任何解决方案
【解决方案2】:

我想知道这样的事情是否可行:

在您想要的每个 Window 或 UserControl 的声明中添加对 System 命名空间的引用。

     xmlns:sys="clr-namespace:System;assembly=mscorlib"

然后在您的资源部分进行如下设置:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
            <sys:String x:Key="WinConvertParam">IDTextForThisWindow</sys:String>
    </ResourceDictionary>
</Window.Resources>

您的绑定语法可能如下所示:

{Binding SomeProperty, 
         Converter={StaticResource thatConverterIWrote}, 
         ConverterParameter={StaticResource WinConvertParam}}

...然后转换类中的 Convert 或 ConvertBack 方法会意识到正在使用它们的 Window,前提是您在文件之间更改 &lt;sys:String/&gt; 的值。

你怎么看?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多