Как увидеть привязку данных времени разработки в редакторе 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}}" ...
Ответы
Ответ 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}"
Теперь вам просто нужно убедиться, что вы инициализируете значения в конструкторе или имеете значения по умолчанию для свойств.
Если вам нужно запустить специальную логику для режима разработки, посмотрите этот ответ.