传递一个 Binding 和一个常量字符串作为参数

Posted

技术标签:

【中文标题】传递一个 Binding 和一个常量字符串作为参数【英文标题】:Pass one Binding and one constant string as parameter 【发布时间】:2021-05-03 07:04:28 【问题描述】:

我有一个按钮,想要传递多个命令参数,一个是 Binding,一个是常量字符串(在本例中为常量字符串 TDS

我正在尝试点击此链接:Passing two command parameters using a WPF binding,但这是用于多重绑定。在我的情况下,我使用 1 个绑定和一个常量字符串。我尝试了以下方法,但它在 VS 中给出了语法错误。

<Button.CommandParameter>
    <MultiBinding>
        <Binding Path="."/>
        <s:String>TDS</s:String>
    </MultiBinding>
</Button.CommandParameter>

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

试试这个:

<Button.CommandParameter>
    <MultiBinding Converter="StaticResource yourConverter">
        <Binding Path="."/>
        <Binding>
            <Binding.Source>
                <s:String>TDS</s:String>
            </Binding.Source>
        </Binding>            
    </MultiBinding>
</Button.CommandParameter>

如果你的字符串是在资源中定义的,你可以这样引用它:

...
<x.Resources>
    <s:String x:Key="stringKey">TDS</s:String>
</x.Resources>
...
<Button.CommandParameter>
    <MultiBinding Converter="StaticResource yourConverter">
        <Binding Path="."/>
        <Binding Source="StaticResource stringKey" />       
    </MultiBinding>
</Button.CommandParameter>

如评论中所述,必须为 MultiBinding 指定转换器。

【讨论】:

MultiBinding 需要一个 Converter 来产生一个值。 @Clemens 是的,我知道。不清楚是否是复制粘贴错误,因为在链接的 SO 答案中转换器没有丢失。 感谢它的工作。我知道转换器丢失了。我只是想先修复编译时错误。你的答案很完美。

以上是关于传递一个 Binding 和一个常量字符串作为参数的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能将常量数组作为参数传递?

在 C++ 中将不同大小的常量数组作为函数参数传递

如何使用 jOOQ 将 Oracle PL/SQL 常量作为参数传递?

Delphi 11:常量对象不能作为 var 参数传递

为啥我们不能将字符串作为模板参数传递?

将指向常量的指针作为参数传递时出现问题