对于相当复杂的WPF工具提示的一部分,我试图使用MultiBinding来基于两个属性生成格式化的文本。问题是,绑定的MultiConverter为其DependencyProperty.UnsetValue
数组中的每个项目接收values
。
使用单个Binding
可以进行以下工作:
<ToolTipService.ToolTip>
<StackPanel>
<TextBlock>
<TextBlock.Text>
<Binding Path="Amt" Converter="{StaticResource singleValueConverter}"/>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</ToolTipService.ToolTip>
将
MultiBinding
与StringFormat
一起使用也是如此:<ToolTipService.ToolTip>
<StackPanel>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat='{0:C} in {1}'>
<Binding Path="Amt"/>
<Binding Path="Currency"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</ToolTipService.ToolTip>
但是带有
MultiBinding
的Converter
不会:<ToolTipService.ToolTip>
<StackPanel>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource multiValueConverter}">
<Binding Path="Amt"/>
<Binding Path="Currency"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</ToolTipService.ToolTip>
最后一个示例中的绑定没有任何值。在工具提示之外不是这种情况-在这种情况下,绑定失败了吗?
最佳答案
尝试在绑定上设置Mode =“ OneWay”。
另外,您是否检查过此问题和解决方案:
http://social.msdn.microsoft.com/Forums/en-IE/wpf/thread/15ada9c7-f781-42c5-be43-d07eb1f90ed4
此错误的原因是
工具提示尚未加载,因此
DependencyProperty.GetValue返回
DependencyProperty.UnsetValue。您
应该添加一些代码来测试
值是Dependency.UnsetValue。的
以下代码显示了如何执行此操作。
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values[0] == DependencyProperty.UnsetValue || values[1] == DependencyProperty.UnsetValue)
return "";
[...]
}
关于wpf - 为什么带有Converter的MultiBinding在ToolTip中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6273083/