Различие между шаблоном управления и DataTemplate в WPF

Первое, что нужно отметить, это то, что ваше состояние является логическим. Это сэкономит вам несколько байтов оперативной памяти.

Следующее, на что следует обратить внимание, это то, что вы хотите игнорировать изменения на входе в течение определенного периода времени; это означает, что вам не нужно хранить «текущее» состояние; только последнее состояние ... которое в конечном итоге будет таким же. Это не может вас спасти, так как 2 логических значения и 1 логическое значение, скорее всего, будут занимать байт; но это дает компилятору шанс, и, самое главное, упрощает работу.

С этими 2 довольно незначительными улучшениями мы доберемся до более крупных. Не используйте макросы, если вы действительно не знаете, что делаете; и даже потом пересмотреть.

Пример кода Arduino имеет тенденцию предлагать их, потому что кто-то думал, что это облегчит изучение; но, честно говоря, они этого не делают. Они не являются функцией, и ваше использование этого действительно не делает то, что вы думаете, что делает. Arduino предлагает ограниченные способы отладки, так что вы не можете сказать, что ваше состояние ВСЕГДА будет высоким, потому что макроразложение таково:

int state = true; 
for(static auto d = create_debounce(); 
    debounce(d, val), 
    false;);
//New lines added for clarity.

Переместить его в функцию; пусть компилятор оптимизирует код, потому что он ВСЕГДА будет работать лучше, чем вы, если вы пишете код так, как это позволяет.

194
задан akjoshi 23 September 2015 в 19:22
поделиться

3 ответа

Обычно элемент управления отображается ради него самого и не отражает базовые данные. Например, кнопка не будет привязана к бизнес-объекту - она ​​существует только для того, чтобы по ней можно было щелкнуть.

258
ответ дан 23 November 2019 в 05:23
поделиться

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

  • DateTemplate используется для элементов, которые предоставляют свойство ItemTemplate Вам для замены содержания его объектов использование DataTemplate с, которую Вы определяете ранее согласно связанным данным через селектор, который Вы обеспечиваете.

  • , Но , если Ваше управление не предоставляет эту роскошь Вам затем, все еще можно использовать ContentView, который может отобразить его содержание от предопределенного ControlTemplate. Интересно, можно измениться ControlTemplate свойство Вашего ContentView во времени выполнения, но, в отличие от средств управления с ItemTemplate свойство, Вы не можете иметь TemplateSelector для этого (ContentView) управление. Однако все еще можно создать триггеры для изменения ControlTemplate во времени выполнения.

0
ответ дан 23 November 2019 в 05:23
поделиться

В основном, ControlTemplate описывает, как отображать Control, а DataTemplate описывает, как отображать данные.

Например:

Метка является элементом управления и будет включать ControlTemplate , в котором говорится, что метка должна отображаться с использованием границы вокруг некоторого содержимого ( DataTemplate или другой элемент управления).

Класс Customer - это Data, и он будет отображаться с использованием DataTemplate , который может отображать тип Customer как StackPanel содержащий два текстовых блока , в одном из которых отображается имя, а в другом - номер телефона.

106
ответ дан 23 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

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