В моем приложении
<Rectangle.Margin>
<MultiBinding Converter="{StaticResource XYPosToThicknessConverter}">
<Binding Path="XPos"/>
<Binding Path="YPos"/>
</MultiBinding>
</Rectangle.Margin>
Контекст данных устанавливается во время выполнения. Приложение работает, но в окне дизайна в VS отображается не предварительный просмотр, а System.InvalidCastException. Вот почему я добавил объект по умолчанию в XYPosToThicknessConverter, который ужасен.
class XYPosToThicknessConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// stupid check to give the design window its default object.
if (!(values[0] is IConvertible))
return new System.Windows.Thickness(3, 3, 0, 0);
// useful code and exception throwing starts here
// ...
}
}
Мои вопросы:
- Что VS / процесс, который строит окно дизайна, передается XYPosToThicknessConverter и как это можно выяснить самостоятельно.
- Как мне изменить мой код XAML, чтобы окно дизайна получало объект по умолчанию, и это лучший способ справиться с этой проблемой?
Я использую VS2010RC с Net4.0