Проектные данные в сочетании с конвертерами - PullRequest
0 голосов
/ 07 марта 2012

Я использую функциональность DesignData в SilverLight для отображения данных в визуальном редакторе 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");
    }

1 Ответ

0 голосов
/ 07 марта 2012

Я предполагаю, что исключение вызывает у вас проблемы? то есть не вызывает рендеринга страницы в 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");
}

Что вы делаете, зависит от вас! Возможно, использовать отражение в сгенерированных типах, которые были переданы?

...