|
Custom control template
|
|||
---|---|---|---|
#18+
Здравствуйте! Имеется customcontrol наследуемый от textbox, называется maskedtextbox. Переопределен template, в template добавлена кнопка очистки содержимого textboxa, получился textbox с кнопкой. Далее, создаю еще customcontrol, назовем его searchtextbox и наследуюсь от maskedtextbox. Необходимо в template этого контрола добавить несколько кнопок и картинку, как это сделать с сохранением template maskedtextboxа и функционала? Usercontrol не интересует. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2012, 03:59 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Jack90Usercontrol не интересует. CustomControl1 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
CustomControl2 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Control Template для CustomControl2 (Generic.xaml Theme) Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Использование CustomControl1, CustomControl2 Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2012, 20:33 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Лесбияночка, спасибо за решение, но как же с триггерами темплейта для кнопок, например невидимость кнопки очистки при пустом текстбоксе, писать реализацию в процедурном коде не хотелось бы. Да и создавать контролы в проц. коде - это не вариант для wpf. Есть ли еще варианты решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 03:24 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Jack90Лесбияночка, спасибо за решение, но как же с триггерами темплейта для кнопок, например невидимость кнопки очистки при пустом текстбоксе, писать реализацию в процедурном коде не хотелось бы. Да и создавать контролы в проц. коде - это не вариант для wpf. Есть ли еще варианты решения? В WPF при написании CustomControl'a думают о логике, а о виде в последнюю очередь. Все контролы WPF почти не имеют своего вида, наследуя его из темы. В случае с CustomControl'ом, принят подход когда в темплейте определяются PART'ы и к ним в OnApplyTemplate пристегиваются обработчики событий например, получаются ссылки на PART'ы чтобы ими манипулировать в соответствии с логикой контрола. Если хотите относительно декларативно, реакцию на действия пользователя с контролами темплейта можно организовать RoutedCommand'ами. Для которых вам надо на уровне вашего контрооа зарегистрировать InputBinding'и, а контролам темплейта присвоить команды с CommandTarget =TemplatedParent. А в темплейте указать всякий раз столько кнопок, сколько вам надо снабдив их стилями, триггерами, и т. п.. Я позже набросаю примерчик, может быть. Сейчас не могу пьяненькая чуть чуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 15:17 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Jack90, Например можно сделать так, чтобы автоматом не генерить контролы, а использовать только ControlTemplate. Наследуется только логика , вид у каждого свой. Themes\Generic.xaml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
CustomControl1 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
CustomControl2 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
MainWnd.xaml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 20:39 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Неплохо, но есть косяки авторНапример можно сделать так, чтобы автоматом не генерить контролы, а использовать только ControlTemplate. Наследуется только логика, вид у каждого свой. Для этого должен быть ContentPresenter в шаблоне, а его нет. Делать подобные конструевины имеет смысл только, если необходим набор кнопок с фиксированным набором действий. В общем варианте можно обойтись ContentControl'ом без всякого наследования, задав нужный template для него ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 21:23 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Лесбияночка, спасибо за наглядный пример, так и сделаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 21:58 |
|
Custom control template
|
|||
---|---|---|---|
#18+
SeVaНеплохо, но есть косяки авторНапример можно сделать так, чтобы автоматом не генерить контролы, а использовать только ControlTemplate. Наследуется только логика, вид у каждого свой. Для этого должен быть ContentPresenter в шаблоне, а его нет. Делать подобные конструевины имеет смысл только, если необходим набор кнопок с фиксированным набором действий. В общем варианте можно обойтись ContentControl'ом без всякого наследования, задав нужный template для него На самом деле автору нужен UserControl, но он не хочет, почему не ясно. Я просто предложила пару вариантов с CustomControl'ом... А по поводу ContentPresenter'a, в ControlTemplat'e темы для контрола, здесь его нет, по скольку базовый класс здесь для всех TextBox (как у автора в условии). А TextBox судя по дереву наследования не Content Control... Потому смысла особого не было в пробрасывании Content'а из TemplatedParent'a в ControlTemplate темы или мы друг друга не поняли. Здесь использован PART_ContentHost <ScrollViewer x:Name="PART_ContentHost" />. Выбор на ScrollView пал из-за того, что в коробочном DefaultStyle для TextBox'а под именем PART_ContentHost определен именно ScrollViewer. Наверное можно было и что-то другое, судя по доке может быть любой FrameworkElement. Если интересно вот DefaultStyle для TextBox Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 21:59 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Лесбияночка, а чем Вы выдрали исходник, если это конечно не секрет? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 23:04 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Jack90, Expression Blend ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 23:27 |
|
Custom control template
|
|||
---|---|---|---|
#18+
ЛесбияночкаSeVaНеплохо, но есть косяки пропущено... Для этого должен быть ContentPresenter в шаблоне, а его нет. Делать подобные конструевины имеет смысл только, если необходим набор кнопок с фиксированным набором действий. В общем варианте можно обойтись ContentControl'ом без всякого наследования, задав нужный template для него На самом деле автору нужен UserControl, но он не хочет, почему не ясно. Я просто предложила пару вариантов с CustomControl'ом... А по поводу ContentPresenter'a, в ControlTemplat'e темы для контрола, здесь его нет, по скольку базовый класс здесь для всех TextBox (как у автора в условии). А TextBox судя по дереву наследования не Content Control... Потому смысла особого не было в пробрасывании Content'а из TemplatedParent'a в ControlTemplate темы или мы друг друга не поняли. Здесь использован PART_ContentHost <ScrollViewer x:Name="PART_ContentHost" />. Выбор на ScrollView пал из-за того, что в коробочном DefaultStyle для TextBox'а под именем PART_ContentHost определен именно ScrollViewer. Наверное можно было и что-то другое, судя по доке может быть любой FrameworkElement. Если интересно вот DefaultStyle для TextBox + Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110.
Wow! Извини, читал по диагонали и не досмотрел, что наследование от TextBox. Это не совсем стандартный вариант и для него, действительно, нужен ScrollView. Молодец, после многих собеседований могу тебе с уверенностью сказать, что переопределить шаблон могут очень немногие мальчики. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 23:38 |
|
Custom control template
|
|||
---|---|---|---|
#18+
SeVaМолодец, после многих собеседований могу тебе с уверенностью сказать, что переопределить шаблон могут очень немногие мальчики. Ты это серьезно? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 23:47 |
|
Custom control template
|
|||
---|---|---|---|
#18+
EDUARD SAPOTSKISeVaМолодец, после многих собеседований могу тебе с уверенностью сказать, что переопределить шаблон могут очень немногие мальчики. Ты это серьезно? Вполне. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 23:51 |
|
Custom control template
|
|||
---|---|---|---|
#18+
SeVaВполне. Надо значит цены повышать! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2012, 23:53 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Jack90Лесбияночка, а чем Вы выдрали исходник, если это конечно не секрет? Не секрет. Вот не большой кусочек говнакода, которым это было сделано. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
EDUARD SAPOTSKI, А как это сделать в бленде? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 01:58 |
|
Custom control template
|
|||
---|---|---|---|
#18+
SeVaEDUARD SAPOTSKIпропущено... Ты это серьезно? Вполне. Я только изучила WPF. Досконально вроде, кроме 3D и Video,Audio,Speech. При необходимости подтяну и это. Думаю работать по этому профилю начать WPF/WCF/EF. EF хорошенько только подтяну. Как считаете, не выпилит ли MS WPF в следующем релизе студии и не обьявит ли depricated? А то у меня попоболь от HTML5/JS. %) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 02:03 |
|
Custom control template
|
|||
---|---|---|---|
#18+
ЛесбияночкаКак считаете, не выпилит ли MS WPF в следующем релизе студии и не обьявит ли depricated? А то у меня попоболь от HTML5/JS. %) Не поверишь, но здесь у многих нестояк на HTML5/JS после XAML/C# А на счет depr e cated ответ - ХЗ, если MS на Silverlight уже забила, то перспективы у классического десктопа ваще печальные, но это в теории, а на практике делфисты вон до сих пор еще живы Да и это мы здесь такие умные что шарп уже хороним, народ который подальше от IT только узнавать про него начинает :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 08:37 |
|
Custom control template
|
|||
---|---|---|---|
#18+
ЛесбияночкаEDUARD SAPOTSKI, А как это сделать в бленде? ПКМ по нужному контролу -> Edit Template -> Edit Copy ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 09:05 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Лесбияночка Как считаете, не выпилит ли MS WPF в следующем релизе студии и не обьявит ли depricated? А то у меня попоболь от HTML5/JS. %) Им, тогда саму студию забанить придется, тк она на wpf ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 09:19 |
|
Custom control template
|
|||
---|---|---|---|
#18+
Как я понял, default style в WPF (в отличие от SL) зависит от ОС - Control Styles and Templates (там же можно скачать все Default WPF Themes). Печально то, что, например, для Вин7 уже ничего не делалось, развитие остановилось на уровне Висты ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 11:47 |
|
Custom control template
|
|||
---|---|---|---|
#18+
LRКак я понял, default style в WPF (в отличие от SL) зависит от ОС Его вполне можно заоверрайдить на нужную тему: http://arbel.net/2006/11/03/forcing-wpf-to-use-a-specific-windows-theme/ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 11:56 |
|
Custom control template
|
|||
---|---|---|---|
#18+
default'тные весьма унылы. В сети полно тем в том числе и в стиле Метро: MahApps.Metro , elysium Metro-Styles-for-WPF . Порт Sl'овских и тд ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 13:05 |
|
Custom control template
|
|||
---|---|---|---|
#18+
SeVadefault'тные весьма унылы. В сети полно тем в том числе и в стиле Метро: MahApps.Metro , elysium Metro-Styles-for-WPF . Порт Sl'овских и тдИ DataGrid в этих скинах представлен? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 13:10 |
|
|
start [/forum/topic.php?fid=21&fpage=34&tid=1441556]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 156ms |
0 / 0 |