WPF TemplateBinding по сравнению с RelativeSource TemplatedParent

Решение, отправленное Stu Thompson, допустимо в Java5.0 и позже. Но я предпочел бы не использовать его, потому что я думаю, что это подвержено ошибкам.

легко забыть энергозависимый оператор и трудный понять, почему это необходимо. Без энергозависимого этот код больше не был бы ориентирован на многопотоковое исполнение из-за перепроверяемого антишаблона блокировки. Посмотрите больше об этом в абзаце 16.2.4 Параллелизм Java на практике . Короче говоря: Этот шаблон (до Java5.0 или без энергозависимого оператора) мог возвратить ссылку на объект Панели, который находится (все еще) в неправильном состоянии.

Этот шаблон был изобретен для оптимизации производительности. Но это больше - действительно не реальное беспокойство. Следующий ленивый код инициализации быстр и - что еще более важно, легче читать.

class Bar {
    private static class BarHolder {
        public static Bar bar = new Bar();
    }

    public static Bar getBar() {
        return BarHolder.bar;
    }
}

164
задан PaN1C_Showt1Me 11 July 2011 в 06:38
поделиться

4 ответа

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

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

Разметка привязки разрешается во время выполнения. Хотя выполнение привязки выполняется медленнее, она разрешает имена свойств, которые не видны в типе, объявленном шаблоном. Говоря медленнее, я отмечу, что это своего рода родственник, поскольку операция привязки занимает очень мало ресурсов процессора приложения. Если бы вы взрывали шаблоны управления на высокой скорости, вы могли бы это заметить.

200
ответ дан 23 November 2019 в 21:14
поделиться

TemplateBinding is a shorthand for Binding with TemplatedParent but it does not expose all the capabilities of the Binding class, for example you can't control Binding.Mode from TemplateBinding.

17
ответ дан 23 November 2019 в 21:14
поделиться

Они используются аналогичным образом, но имеют несколько отличий. Вот ссылка на документацию TemplateBinding: http://msdn.microsoft.com/en-us/library/ms742882.aspx

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

Я думал, что TemplateBinding не поддерживает морозные типы (который включает в себя кисти объекты). Обрести проблему. Можно использовать TemplatedParent

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

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