WPF, UserControl или DataTemplate

Таблица переходов может быть или массивом указателей на функции или массивом команд перехода машинного кода. Если у Вас есть относительно статический набор функций (таких как системные вызовы или виртуальные функции для класса) тогда, можно составить эту таблицу однажды и вызвать функции с помощью простого индекса в массив. Это означало бы получать указатель и вызывать функцию или переходить к машинному коду в зависимости от типа используемой таблицы.

преимущества выполнения этого во встроенном программировании:

  1. Индексы являются большей памятью, эффективной, чем машинный код или указатели, таким образом, существует потенциал для сбережений памяти в ограниченных средах.
  2. Для какой-то конкретной функции индекс останется стабильным, и изменяющийся функцию просто требует выгрузки указателя функции.

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

23
задан Zach 27 November 2009 в 09:29
поделиться

3 ответа

Концептуально DataTemplates и UserControls решают две разные проблемы. На самом деле они не взаимозаменяемы, поэтому ваши сравнения не совсем точны.

DataTemplates - все о применении визуального стиля к DataType. Обычно это означает, что у меня есть собственный класс .NET под названием Foo, и я хочу придать ему визуальный стиль. Я бы сделал это, создав DataTemplate с DataType Foo.

Затем я могу поместить этот DataTemplate в свое приложение (скажем, в App.XAML), и мой визуальный стиль будет применяться к моему объекту данных Foo, где бы он ни использовался. . Часто это означает, что вы увидите ContentControl, у которого свойство Content привязано к свойству типа Foo.

UserControls на другом имеют все, что связано с организацией XAML. Пользовательский элемент управления помогает в организации фрагментов XAML, которые вы хотите повторно использовать в своем приложении, с привязанным к нему поведением и функциональностью. Это больше, чем просто DataTempate.

DataTemplate привязан к одному DataType и отображает визуальный элемент для этого типа. UserControl может состоять из нескольких типов данных и может включать в себя настраиваемые поведения.

При этом я очень редко нахожу необходимость в UserControl. Я использую DataTemplates повсюду для моделирования своих данных и реализации своего поведения с помощью привязок данных и шаблона MVVM.

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

DataTemplate привязан к одному DataType и отображает визуальный элемент для этого типа. UserControl может состоять из нескольких типов данных и может включать в себя настраиваемые поведения.

При этом я очень редко нахожу необходимость в UserControl. Я использую DataTemplates повсюду для моделирования своих данных и реализации своего поведения с помощью привязок данных и шаблона MVVM.

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

DataTemplate привязан к одному DataType и отображает визуальный элемент для этого типа. UserControl может состоять из нескольких типов данных и может включать в себя настраиваемые поведения.

При этом я очень редко нахожу необходимость в UserControl. Я использую DataTemplates повсюду для моделирования своих данных и реализации своего поведения с помощью привязок данных и шаблона MVVM.

UserControl может состоять из нескольких типов данных и может включать в себя настраиваемые поведения.

При этом я очень редко нахожу необходимость в UserControl. Я использую DataTemplates повсюду для моделирования своих данных и реализации своего поведения с помощью привязок данных и шаблона MVVM.

UserControl может состоять из нескольких DataTypes и может включать настраиваемые поведения.

При этом я очень редко нахожу необходимость в UserControl. Я использую DataTemplates повсюду для моделирования своих данных и реализации своего поведения с помощью привязок данных и шаблона MVVM.

28
ответ дан 29 November 2019 в 02:01
поделиться

Лично я создаю UserControl, а затем создаю из него DataTemplate. Для меня это дает следующие преимущества:

  1. Можно использовать в разных окнах, только переопределив часть DataTemplate.
  2. Можно использовать код программной части (я знаю, я знаю, но некоторые вещи намного проще использовать кода программной части, я не вижу смысла в ненужном усложнении моего кода на основе догмы).
  3. Поддержка конструктора XAML.
11
ответ дан 29 November 2019 в 02:01
поделиться

Примерно 2.

I Я бы сказал, что DataTemplates не предназначены для использования с выделенным кодом. В большинстве случаев вы можете использовать только DataBinding и Commands, чтобы связать логику между вашей моделью и ее представлением. Отсутствие кода программной части также упрощает модульное тестирование вашего приложения.

2
ответ дан 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

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