【问题标题】:Design Data In Conjunction With Converters结合转换器的设计数据
【发布时间】:2012-03-07 06:16:37
【问题描述】:

我在设计布局时使用 SilverLight 中的 DesignData 功能在可视化 xaml 编辑器中显示数据。但是,我在绑定期间在布局中使用的转换器期望类型为 X,但在设计阶段接收到的是某种“幕后”生成的设计类 _.di0.X

处理这种情况的最佳方法是什么?此时,当转换器没有收到 X 类型时,我抛出异常,因此应用程序崩溃。

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var myObj = value as X;

        if (myObj != null)
        {
            // bla bla
        }

        throw new ArgumentException("value was of type " + value.GetType() + " must be of type X", "value");
    }

【问题讨论】:

    标签: .net silverlight data-binding


    【解决方案1】:

    我猜是异常导致了你的问题?即导致页面无法在 Visual Studio 中呈现。您可以做的是检测您是否处于设计模式,然后采用一些不同的逻辑:

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (DesignerProperties.IsInDesignTool)
        {
            // do something different!
            return "";
        }        
    
        var myObj = value as X;
    
        if (myObj != null)
        {
            // bla bla
        }
    
        throw new ArgumentException("value was of type " + value.GetType() + " must be of type X", "value");
    }
    

    你做什么,取决于你!也许对已传递的生成类型使用反射?

    【讨论】:

    • 最终使用反射。真的希望有更好的解决方案。
    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2017-03-14
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多