Создание смешивающегося DataTemplate

Абсолютно нет. Неправильное использование их, хотя..., который плох.

Бессмысленно удаление их ради является просто этим... бессмысленным. Если Вы не знаете advanatages и недостатки, лучше держаться подальше и делают, поскольку Вы преподавались/изучались, но нет ничего неявно неправильно с глобальными переменными. Когда Вы понимаете, что за и против лучше принимают Ваше собственное решение.

16
задан bitbonk 8 February 2011 в 11:24
поделиться

2 ответа

Это немного сложно использовать, но в Blend есть функция под названием «Данные времени разработки», которая может вам помочь. Поначалу сложно начать, но как только вы сделаете несколько, это будет довольно легко. Это как бы заставляет вас использовать хороший шаблон для DataContext.

Вот хорошая ссылка на эту тему: http://www.robfe.com/2009/08/design-time-data-in- expression-blend-3 /

Вот несколько отрывков для выбора:

On Design-Time Sizes

... свойства времени разработки могут быть безопасно игнорируется другими инструментами, и они игнорируются во время выполнения (mc: Ignorable указывает, что пространство имен с префиксом "d" может быть игнорируется).

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

Expression Blend использует два времени разработки свойства (d: DesignWidth, d: DesignHeight), чтобы указать размер для элемент управления, который будет использоваться во время разработки ...

Об источниках данных времени разработки

Я наткнулся на d: Datacontext, когда играл с Blend 3 и пробовал добавление «живого источника данных» в мой окно. Я думал, что это будет вести себя так же, как старый способ установка DataContext, но когда я запустил мое приложение, данных не было! ...

Итак, теперь мы можем написать код вроде этого:

 ...
<Сетка ...
 DataContext = "{StaticResource GameDataSource}"
 d: DataContext = "{StaticResource DesignTime_DateDataSource}">

Обратите внимание, что это для Blend 3, если вам нужна сторонняя поддержка этих функций. Они довольно хороши - есть даже дизайнер для данных времени разработки, хотя я еще не изучал эти возможности.

Применение к шаблонам данных

Это то, что я вроде как придумал, но, похоже, он работает. Здесь я использую функцию данных во время разработки для извлечения данных в визуальный элемент d: DataContext. Вам нужно будет сделать это для каждого элемента верхнего уровня, которому нужен набор DataContext .

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <!-- Resource dictionary entries should be defined here. -->
    <DataTemplate x:Key="MyTemplate">
        <TextBlock Text="{Binding Text}" d:DataContext="{StaticResource SampleDataSource}" />
    </DataTemplate>
</ResourceDictionary>

Синтаксис привязки будет немного более явным, если вы используете DataTemplate с набором DataType, но он все еще работает:

<DataTemplate DataType="{x:Type vm:MyViewModel}" >
   <TextBlock Text="{Binding Text}" 
              d:DataContext="{Binding Source={StaticResource SampleDataSource}}" />
</DataTemplate>

Эта стратегия позволит вам увидеть, как DataTemplate будет работать , редактируя его напрямую , однако вы выиграли ' не сможете увидеть результат в любом представлении, использующем этот DataTemplate, если только вы не запустите приложение. На данный момент это ограничение Blend из-за того, что они, похоже, используют не Mocks, а скорее объекты полной замены. Если blend когда-либо добавит возможность создавать новый источник поддельных данных, щелкнув «Новый источник данных -> На основе указанного объекта -> MyCustomerObject», тогда вы будете в бизнесе.

Возможно, вы сможете преодолеть это ограничение с помощью некоторых прилагаемых собственный обман свойств, но в лучшем случае это будет сложно.

Альтернатива

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

Здесь ' http://karlshifflett.wordpress.com/2008/10/11/viewing-design-time-data-in-visual-studio-2008-cider-designer-in-wpf-and-silverlight-projects/

Надеюсь, это поможет, Андерсон

25
ответ дан 30 November 2019 в 21:29
поделиться

Эта стратегия позволит вам увидеть как DataTemplate будет работать, пока редактировать его напрямую, но вы не будете увидеть результат в любом виде который использует этот DataTemplate, если вы действительно запускаете приложение. Это ограничение Blend на данный момент к тому, что они не кажутся использовать Mocks, но скорее полный объекты замены. Если смешать когда-нибудь добавляет возможность создать новую подделку источник данных, нажав "Новый DataSource -> На основе ссылки Объект -> MyCustomerObject ", затем вы будет в бизнесе.

Если я хочу использовать фактические макеты ViewModel, я думаю, это лучший способ создать фактические экземпляры ViewModel и ссылаться на них с помощью d: DataContext (например, с помощью ObjectDataProvider или x: Static)

1
ответ дан 30 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: