|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Желание имею наваять контрол (К) у которва будет функционал (Ф), который будет наследоваться другими контролами. Там, я не знаю, какая-нибудь супер-кнопка будет появляться на наследниках. Создал класс наследующий ContentControl в .cs- файле, теперь мне нужно ту самую кнопку встроить, я бы сделал это в шаблоне, но вопрос: как шаблон прицепить к этому базовому классу? - XAMLа-то у него нет. Для экспериментов вписал Template = FindResource(.. в конструкторе или около того контрола К, но это работает, если сам шаблон подключать ресурсом на уровне ресурсов приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:18 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
создать в сборке папку Themes, в папке Themes файл Generic.xaml (ResourceDictionary), создать в файле стиль с ключем {x:Type типтвоегоконтрола}, в стиле задать шаблон. Профит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 14:29 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Roman Mejtes, *** волшебненько ***. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 15:06 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Roman Mejtesс ключем {x:Type типтвоегоконтрола}Не в первый раз попадается такое задание ключа - это просто удобство или есть какой-то еще профит? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 15:07 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Shocker.ProRoman Mejtesс ключем {x:Type типтвоегоконтрола}Не в первый раз попадается такое задание ключа - это просто удобство или есть какой-то еще профит? ну можно и не указывать Type конечно, можно вообще не задавать Key. но {x:Type я всегда указываю, так удобнее и понятнее. даже для DataTemplate я обычно ключом указываю {x:Type ViewModelType} ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2016, 15:44 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
---------- У этова базового контрола имеется свойство типа ViewModelAbstract. Планировалось в него помещать разнообразные модели и в кзамле контролов-наследников привязываться к свойствам вьюмоделей-наследников: class ViewModelAbstract; class DerivedVM : ViewModelAbstract { prop PropDerived; } class Ctrl :Control { ViewModelAbstract _VM; } class A : Ctrl { ctor() { _VM = new DerivedVM(); } } <..> <.. Value={Binding _VM.PropDerived } /> Как-нибудь такое разрешимо? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 08:25 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Хотя, конеш, ерунда какая-то.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 08:28 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 08:54 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
А что мешает? Сделать это свойство DataContext-ом... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 08:58 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
это вообще не верный подход, Control вообще не должен ни чего знать не про какие модели. У Control должны быть свойства зависимости, через которые будет определятся его текущее состояние и внешний вид. А про классы моделей он знать не должен. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 09:40 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Спасибо Shocker.ProА что мешает? Сделать это свойство DataContext-ом... Тогда при вставке готового контрола в какую-нибудь форму не работают привязки от формы к этому контролу с изменённым DataContext-ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 09:53 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Roman Mejtesэто вообще не верный подход, Control вообще не должен ни чего знать не про какие модели. У Control должны быть свойства зависимости, через которые будет определятся его текущее состояние и внешний вид. А про классы моделей он знать не должен. авторНеоднократно слышал это.. Да. Ну и пускай :(. может я PhD по неверному проектированию. Может даже Президент медаль приколет.. когда-нибудь. ----- В общем объяснение такое: контрол добавляет всем наследникам определенную реакцию на события вьюмодели - начата/окончена операция к бд и ещё там несколько непереводимых. Скажем, пока к бд запросы идут, контрол должен символизировать песочными часами. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 10:02 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Логично. Просто нужно контекстом делать не сам UserControl, а его дочерний элемент ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 10:03 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
это очень плохая и опасная практика, подписываться на события модели из View и наоборот, потом с высвобождением этих ресурсов могут возникнуть проблему, так как подписавшись, будет сложно понять, когда от них отписываться. Лучше использовать ICommand или на крайняк использовать связывание с Delegat'ом ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 10:16 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Shocker.ProЛогично. Просто нужно контекстом делать не сам UserControl, а его дочерний элемент Попробую завтра ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 10:20 |
|
WPF базовый Control и его шаблонъ
|
|||
---|---|---|---|
#18+
Roman Mejtesэто очень плохая и опасная практика, подписываться на события модели из View и наоборот, потом с высвобождением этих ресурсов могут возникнуть проблему, так как подписавшись, будет сложно понять, когда от них отписываться. Лучше использовать ICommand или на крайняк использовать связывание с Delegat'ом Спасибо за критику, обдумаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 10:20 |
|
|
start [/forum/topic.php?fid=21&fpage=12&tid=1440688]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 277ms |
total: | 440ms |
0 / 0 |