C# WPF QuickConverter:布尔值且不工作

C# WPF QuickConverter:布尔值且不工作,c#,wpf,xaml,C#,Wpf,Xaml,我在WPF QuickConverter中使用多重绑定时遇到问题,我在其中使用了两个参数: <Grid Visibility="{qc:MultiBinding '$P2 != null &amp;&amp; $P1 == OutputTarget.Disk ? Visibility.Visible : Visibility.Hidden', P1={Binding Target}, P2={Binding ElementName=uc1, Path=SelectedOut

我在WPF QuickConverter中使用多重绑定时遇到问题,我在其中使用了两个参数:

<Grid Visibility="{qc:MultiBinding '$P2 != null &amp;&amp; $P1 == OutputTarget.Disk ? Visibility.Visible : Visibility.Hidden', P1={Binding Target}, P2={Binding ElementName=uc1, Path=SelectedOutput}}">
</Grid>
请注意,如果我只使用其中一个,它会工作!例如,这:

<Grid Visibility="{qc:MultiBinding '$P2 != null ? Visibility.Visible : Visibility.Hidden', P2={Binding ElementName=uc1, Path=SelectedOutput}}">
</Grid>
这是可行的,这也是可行的:

<Grid Visibility="{qc:MultiBinding '$P1 == OutputTarget.Disk ? Visibility.Visible : Visibility.Hidden', P1={Binding Target}}">
</Grid>
那么,为什么有两个表达式的一个不起作用呢?请注意,我尝试了boht&&;但结果并没有改变
还要注意,我已经正确注册了表达式中涉及的所有类型。

这种情况是可行的:

Visibility="{qc:MultiBinding '($P0 &amp;&amp;  $P1)? Visibility.Visible : Visibility.Collapsed', P0={Binding ElementName=ckb_NineMin,Path=IsChecked}, P1={Binding  ElementName=ckb_TwelveMin,Path=IsChecked} }" 

&需要替换的是XAML特殊字符。

愚蠢的问题,但为什么不使用触发器呢?使用转换器效率很低,而且维护也很麻烦。出于好奇,如果您尝试使用| |会发生什么?或者如果你把它包装在lambda{qc:MultiBinding'T=$P1,S=$P2.SelectedOutput=>$S!=null$T==OutputTarget.Disk?Visibility.Visibility:Visibility.Hidden',P1={Binding Target},P2={Binding ElementName=uc1}?@SledgeHammer:我可以使用触发器,但这不是重点,我想知道为什么不起作用,因为从网上的例子来看,我觉得它应该可以工作。@SledgeHammer:但如果你真的需要一个原因的话:触发器要详细得多。这是一个内嵌式解决方案,使用触发器,您必须定义一个样式,在其中添加触发器,然后在这些样式中添加setter。。。很容易就有8-10行XAML。。。这是一条单行线。这里的效率不是问题,在一个不重复的用户控件中,这只会被使用2-3次,因此开销很小,应该可以正常工作。您是否像这样初始化QuickConverter://设置QuickConverter。QuickConverter.EquationTokenizer.AddNamespaceSystem,Assembly.GetAssemblytypeofobject;QuickConverter.EquationTokenizer.AddNamespacetypeofobject;QuickConverter.EquationTokenizer.AddAssemblytypeofobject.Assembly;QuickConverter.EquationTokenizer.AddNamespacetypeofVisibility;QuickConverter.EquationTokenizer.AddExtensionMethodstypeofEnumerable;Stack Overflow是一个英语网站。所有问题和答案必须用英语解释,而不是任何其他语言。考虑到缺乏任何英语解释,代码式答案通常也被认为是低质量的。如果没有解释,这样的回答不会对当前的问题增加多少理解。