Подтвердить что ты не робот

Как увидеть привязку данных времени разработки в редакторе XAML (он работает во время выполнения)?

I число, связанное с данными, будет выглядеть следующим образом:

<Window <!-- ... --> DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <Grid>
        <TextBlock>
            Version is: 
            <Run Text="{Binding Version, Mode=OneWay}"></Run>
            and advancing...
        </TextBlock>
    </Grid>
</Window>

и он работает во время выполнения.

Как я могу увидеть его во время разработки в редакторе XAML в Visual Studio 2012? Я вижу только:

Version is: and advancing...

вместо:

Version is: 5.2.2 and advancing...

EDIT - Мое решение:

Jure answer ниже работает, но в итоге я использовал метод статического кода dummy view-model, который работает лучше для меня, поскольку данные являются макетом реального типа модели представления:

d:DataContext="{Binding Source={StaticResource DesignViewModel}}" ...
4b9b3361

Ответ 1

Короткий ответ, вы не можете сделать это таким образом. Конструктор VS не выполняет код времени выполнения, и ваша привязка не будет разрешена во время разработки. Но есть поддержка данных времени разработки через расширение d:DesignData.

Вы можете установить контекст данных проекта следующим образом:

<Window xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DataContext="{d:DesignData Source=/SampleData/SomeSampleData.xaml}"
    DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
    <TextBlock>
        Version is: 
        <Run Text="{Binding Version, Mode=OneWay}"></Run>
        and advancing...
    </TextBlock>
</Grid>

d:DataContext={d:DesignData.... устанавливает время создания DataContext который будет использоваться для разрешения привязок в поверхности конструктора VS. Вы можете установить его в файл xaml, который содержит ваши образцы данных. Образец xaml файла должен быть собран с действием сборки "DesignData".

Подробнее здесь: http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/sample-data-in-the-wpf-and-silverlight-designer.aspx

Ответ 2

Убедитесь, что у вас есть эти определения в корневом теге вашего xaml файла (в вашем случае тег Window):

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"

Затем в любом месте xaml (включая корневой тег) вы можете добавить это:

d:DataContext="{d:DesignInstance myNamespace:MyViewModel, IsDesignTimeCreatable=True}"

Теперь вам просто нужно убедиться, что вы инициализируете значения в конструкторе или имеете значения по умолчанию для свойств.

Если вам нужно запустить специальную логику для режима разработки, посмотрите этот ответ.