在我的申请中我有
<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
// ...
}
}
我的问题:
我正在使用VS2010RC和Net4.0
答案 0 :(得分:1)
尝试将后备值添加到绑定中。这就是我在设计模式中显示'好像'的东西。
Something="{Binding Smthing, FallbackValue='hello world'}"
HTH
答案 1 :(得分:0)
您需要确保设计人员能够获得“XPos”和“YPos”的有效副本,并且它们与运行时的值相同。
您可能无法在视图中正确设置DataContext
,因此转换器将变为空。如果将DataContext
设置为有效对象(可以是设计时数据),则代码应该在没有转换器默认值的情况下工作。