Почему MultiBinding с конвертером не работает в подсказке?

Для части довольно сложной ToolTip WPF я пытаюсь использовать MultiBinding для создания форматированного текста на основе двух свойств. Проблема в том, что привязка MultiConverter получает DependencyProperty.UnsetValue для каждого элемента в массиве values.

Следующие работы, используя один Binding:

<tooltipservice.tooltip>
 <stackpanel>
 <textblock>
 <textblock.text>
 <binding path="Amt" converter="{StaticResource singleValueConverter}">
 </binding></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">
 </binding></binding></multibinding>
 </textblock.text>
 </textblock> 
 </stackpanel>
</tooltipservice.tooltip>

Но a MultiBinding с Converter не имеет значения:

<tooltipservice.tooltip>
 <stackpanel>
 <textblock>
 <textblock.text>
 <multibinding converter="{StaticResource multiValueConverter}">
 <binding path="Amt">
 <binding path="Currency">
 </binding></binding></multibinding>
 </textblock.text>
 </textblock> 
 </stackpanel>
</tooltipservice.tooltip>

Связи в последнем примере не получают никакого значения. Это не так за пределами ToolTip - что происходит, так что в этом конкретном случае сбой не выполняется?

2 ответа

Попробуйте установить режим "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 "";
 [...]
}


Попробуйте следующее:

<tooltipservice.tooltip>
 <stackpanel>
 <textblock>
 <textblock.text>
 <multibinding converter="{StaticResource multiValueConverter}">
 <multibinding.bindings>
 <bindingcollection>
 <binding path="Amt">
 <binding path="Currency">
 </binding></binding></bindingcollection>
 </multibinding.bindings>
 </multibinding>
 </textblock.text>
 </textblock> 
 </stackpanel>
</tooltipservice.tooltip>

licensed under cc by-sa 3.0 with attribution.