Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Всем привет! Пытаюсь реализовать свой контрол, который содержит внутри себя, кроме прочего, TextBox. Контрол имеет свойство Text , которое аналогично такому же свойству TextBox'а : Код: plaintext 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. В приложении (xaml) использую так: Код: plaintext Код: plaintext Такое впечатление, что в MyControl я чего-то недописал... Если кто знает в чем может быть проблема, где я чего упустил, подскажите, пожалуйста. Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2011, 10:40 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
UIPropertyMetadata ClassProvides property metadata for non-framework properties that do have rendering/user interface impact at the core level. FrameworkPropertyMetadata (derived from this class) is the more common metadata class used for framework-level properties that also have rendering/user interface impact. Может использовать FrameworkPropertyMetadata? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2011, 13:05 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Спасибо за подсказку!!! То что нужно: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2011, 15:13 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Alex ShulgВ приложении (xaml) использую так: Код: plaintext Все оказалось проще: Код: plaintext Так что все работает и с UIPropertyMetadata. Но все равно, спасибо, наводка помогла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2011, 15:20 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
У меня такой вопрос по поводу кастомного контрола. Если мне надо сделать график некой функции (с выбором параметров линии таких как цвет, толщина, тип и толщина шрифта) какой контрол наследовать - control или canvas? Если в этом контроле есть кроме самой линии/функции, линии ординат, текстовые надписи к ординатам, паралельные ординатам линии - может это надо применять usercontrol как групировку нескольких существующих компонентов, или в custom control можно тоже использовать вложенные компоненты в xaml-разметке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 14:10 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtУ меня такой вопрос по поводу кастомного контрола. Если мне надо сделать график некой функции (с выбором параметров линии таких как цвет, толщина, тип и толщина шрифта) какой контрол наследовать - control или canvas? Если в этом контроле есть кроме самой линии/функции, линии ординат, текстовые надписи к ординатам, паралельные ординатам линии - может это надо применять usercontrol как групировку нескольких существующих компонентов, или в custom control можно тоже использовать вложенные компоненты в xaml-разметке? Я бы не изобретал велосипед, а взял готовое . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 18:48 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Готовое, изобретенное мной, мне надо именно предоставить. Вроде не так уж сложно в теории, если не надо от руки линию рисовать. Хотя очень многокомпонентный контрол должен получиться, и на коудпрожекте он расширяет userproject. Более того там он использует стороннюю библиотеку, которая в первую очередь помогает для биндинга событий, что наверное в моем случае тоже будет ключевым моментом если кроме dependency properties, использовать routed events. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 19:11 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Canvas и Path+Geomtry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 22:22 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Да canvas может и подойдет но это лейаут. А вот вместо линии графика наверное надо Polyline. Меня интересует лиш то если групировать отдельные конттролы типа квадратной разметки графика, линий ординат, самой линии - возможно ли это все поместить в generic.xaml. Еще одним условием надо использовать несколько dependency properties для свойств графика. Но например здесь https://www.codeproject.com/Articles/49802/Create-a-WPF-Custom-Control-Part идет речь, что кастом контрол не имеет "design surface", и в общем он используется для расширение например одного компонента, в частности кнопки - а у меня мультикомпонентный контрол? Вот бы пример найти такой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 18:53 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtесли групировать отдельные конттролы типа квадратной разметки графика, линий ординат,я не понял. Обычно сетка координат и т.д. описанное рисуется в динамике и не является отдельными контролами для группировки. Так можно и буквы группировать из закорючек контролов XAML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 19:42 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
То есть все описание кастомного компонента должно быть в коде, а изменение шрифта, толщины линии будут реализованы через dependency property? Как тогда привязывать внешние события (например изменение шрифта) к этим property? В общем такой вариант приводится даже в целой книги о графиках wpf, но там он идет как user control тоже. Но там тоже есть textblock и т.д. А во всех примерах C.C. это расширение одного контрола, и композиция нескольких других существующих вроде не предполагается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2018, 13:36 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Если простое наследование Control подходит через добавление к дефолтному Border - Canvas/Grid в качестве потомка. То в последнем случае сразу возникает проблема после необходимости добавление в generic.xaml - x:class="wpfapp.customcontrol" что требует наличие ивент-обработчика. Ошибка такого типа после этого добавления - CustomControl:Control требует partial modifier ибо определение такого класа вроде уже есть. После добавление partial - уже другая ошибка can not be same definition for different base class?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 03:26 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
xaml должен начинаться с Код: xml 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 09:34 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Да начинается он стандартно - generics.xaml - только вот проблема может в том что всю разметку я помещаю в <Style, где есть <Border (ведь наследую я так - CustomControl:Control) всередину которого я помещаю Grid, a в нее потом другие компоненты как в UserControl - Только так я могу использовать как Customcontrol. Но посколько у меня есть event handler - я должен, ибо требует компилятор, добавить в шапку x:class="wpfapp.customcontrol", ссылка на полное имя класа где есть в том числе метод событие. Но после этого и появляется ошибка что надо partial modifier - ибо дефиниция custom control уже есть. Но она одна есть а не две. После добавление уже слова partial - уже ошибка что не может одной дефиниции/ или слова pаrtiаl (сейчас точно не помню) для разных базовых класов?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 13:17 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Ты сейчас пытаешься объяснить жестами, как поёт Паваротти )) Можешь дать тестовый пример? Только абсолютно тестовый, без всякого постороннего хлама, который не хочет работать. Желательно в виде архива проекта. Тогда можно будет чем-то помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 13:23 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
У вас есть элемент управления, который вы создали сами class MyControl : Control Есть элементу управления которые входят в его шаблон. Вам нужно получать от них события и обрабатывать внутри этого элемента управления? зачем вам тогда Behavior класс? я не понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 13:23 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Может надо переписать generic.xaml полностью. Чтобы он был более похожим на хаml обычного контрола. А все манипуляции этого контрола наверное надо уже будет делать при его добавление в main window - и привязывание его custom properties к custom / routed events - шаблон юзер контрола для хотя бы построение такого графика у меня есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 13:26 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, Я полностью перестал понимать. Скорее всего, ты идешь не тем путем. Ты пытаешься обсуждать не подход к решению какой-то проблемы, а твою (возможно неверную) реализацию этого решения. Попробуй от печки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 13:29 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
customcontrol:control - это клас созданный автоматически при создание нового customcontrol - new item- wpf... Если бы под рукой был код - но например customcontrol:control на котором выскакивает ошибка pаrtiаl собственно пуст... А generics.xaml - вызывает эту ошибку после добавление x:class - результат стандартного требование если в разметке есть ссылка на обработку события (в этом случае - grid_size_changed). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 13:39 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, то есть очевидная проблема в дублирование класа что ли. Может такое быть x:class=customclass быть вторым частичным класом? Но это всего лиш ссылка и в разметке тем более. О каких разных базовых класах может быть речь в последней ошибке- partial customcontrol:control и сам control? Может дебагер может больше подсказать где есть второй скрытый клас, ибо сам компилятор никаких ссылок не предоставляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 14:09 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
1) Создайте свой класс, наследуйте его от Control 2) переопределите в нём стиль по умолчанию 3) создайте стиль по умолчанию в generic.xaml профит, в чем грабли я не понимаю? UserControl наследует не Control, а ContentControl. Я им вообще не пользуюсь, так как от ContentControl он по сути ничем не отичается. mycontrol.cs Код: 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 14:14 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, Собственно я наследую Control. В нем и есть конструктор static CustomControl{ defaultkeypropert ... Хотя стили здесь никакой роли наверное не играют, кроме если они привязаны к dependencyproperty - надо просто нарисовать график со всеми линиями, чтобы не выскакивали ошибки в том числе последняя. Шаблоный код у меня есть, от usercontrol кстати, и там эта ошибка очевидно не появляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 14:52 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Вы пишите, что у вас какая то проблема с Partial классом, мне не понятно, от куда она у вас берется, так как в примере моем, не Partial классы, они там не нужны от слова совсем. Объясните нормально, в чем у вас ошибка, пример с воспроизведенной проблемой в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 15:07 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, вам наверное проще создать кастомный контрол автоматически, в gеnеric.xаml вставить в бордер, грид, с любым суб- компонентом с ивентом добавить x:clаss, и включить инстанс этого кастом контрола в главный xаml. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 16:21 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
То есть помощь нужна вам, но мы должны еще и воспроизводить вашу ситуацию по неясным обрывкам рассуждений, вместо того, чтобы получить от вас тестовый проект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 16:45 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
я уже в примере привел вариант, как можно привязаться к событиям элементов управления шаблона. это делается либо через TemplatePart, либо через RoutedEvents. в Generic.xaml недолжно быть никаких событий, xaml определяет вид, а не поведение. в Xaml можно обрабатывть RoutedEvent для анимации и EventTrigger'ов и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 17:01 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, вот тот тип ошибки что возникает https://stackoverflow.com/questions/12866436/missing-partial-modifier-on-declaration-another-partial-declaration-of-this-ty. Проблема где найти здесь ту же самую дефиницию класа. Если после добавление pаrtiаl - возникает ошибка что разные базовые класы может речь идет о дефиниции Control class. И вообще ошибка возникает при добавление x:clаss который обязателен если в разметке есть ивент-хендлер. Так что он возможен в xаml, по определению. То есть может проблема в x:class="wpfapp.customcontrol"; после чего идет xmlns:local="clr-namespace:WpfApplication2" если написать без нейспейса х:class это ничего не меняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 17:48 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, вот я добавил другой такой же customcontrol2 разметка которого добавилась в тот же generics.xaml и изменил x:class ... customcontrol2. Та же ошибка с partial modifier. Даже не добавлял второй кастом контрол в главное окно разметки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 18:00 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
потому, что вы фигню делайте. У Generic.xaml файла не может быть CodeBehind файла\класса, не может быть атрибута x:Class, такое атрибут может быть, если вы инстанцируйте окно или элемент управления как корневой элемент XAML файла. А generic.xaml это ResourceDictionary, у файла ресурсов не может быть CodeBehind файла априори. Вы городите ерунду и пытаетесь это преодолеть, но это невозможно, так как концептуально неверный подход. Еще раз объясните, какие целей вы пытаетесь достигнуть, что конкретно реализовать и вам подскажут, что нужно сделать. повторюсь, корневой элемент ResourceDictionary файла generic.xaml не может содержать атрибута x:Class="". Этот атрибут можно задать, только если корневым элементом XAML файла является элемент управления. Window, UserControl или любой другой. Добавлю, что такая практика (использования CodeBehind классов) в WPF считается каменным веком и не используется. Еще не было не 1 случая в моей практике, когда мне были бы нужны эти файла и Partial классы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 23:52 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, может быть - примеров x:class в generic.xaml нету. Да и пусть сделать пять или десять кастом компонентов -- вся разметка будет в этом одном файле, в котором даже теоретически можно предположить лиш один x:class. Хотя без указание x:class привязать событие к компоненту ресурсного словаря можно в коуд-бехайнде таким образом public override void OnApplyTemplate() { base.OnApplyTemplate(); var button = Template.FindName("PART_leftButton", this) as Button; if (button != null) { button.Click += (s, a) => Console.WriteLine(@"click"); } } Может использование new custom control здесь в корне неправильно, если есть варианты такого графика как user control. Там в любом случае надо пару текстблоков, вложенные гриды в разметке, а саму линии надо рисовать в коде. Потому предполагаю чтобы добится в конечном итоге customcontrol, мне надо сперва сделать usercontrol1:usercontrol - как некий композит компонентов, а потом уже расширять таким образом customcontrol:usercontrol1 для добавления стилей, хотя это наверное лишние ибо выбор например толщины или цвета линии надо делать извне этого контрола (например через комбобокс или переключатели), и потом результат событие этого выбора передавать в кастомконтрол и связывать их с обязательными dependency property. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 01:09 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, Вот есть пример привязки события к dependencyproperty: public static readonly DependencyProperty ItemsSourceChangedProperty = DependencyProperty.RegisterAttached("ItemsSourceChanged", typeof(bool), typeof(ItemsSourceChangedBehavior), new FrameworkPropertyMetadata(false, OnItemsSourceChanged)); Тогда private static void OnItemsSourceChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { ItemsControl itemsControl = obj as ItemsControl; //Как тогда идентифицировать именно //этот внешний комбо-бокс (один из //нескольких) например для // толщины линии и собственно передать в // в setvalue() dependencyproperty if (itemsControl == null) return; bool oldValue = (bool)e.OldValue; bool newValue = (bool)e.NewValue; ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 01:40 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, Я использовал wpf на базовом уровне потому вопросы может и простые. Но в даном случае мне надо знать как передать измененные данные в VM в этот usercontrol/customcontrol. Как организировать передачу внешних даных через событие - ведь VM не должно знать ничего о viеw. Если например в аргументах передается параметр doublе, в юзерконтрол - как отличить параметр fontsize и linethickness если они одного типа? Как организировать callbackfunction в dependency property, или как провести биндинг нескольких dependency property UC к обьекту VМ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 17:50 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Хотелось бы получить ответ на основание практического кода: <Window.Resources> <local:ModelViewclass x:Key="ViewModel"/> //Modelviewclass:INotifyProperyChange - клас свойств которого должны передаватся через биндинг в UserControl1 </Window.Resources> <Grid x:Name="mainGrid"> <local:UserControl1 x:Name="Chart" Xmin="-5" Xmax="5" DataContext="{Binding Source={StaticResource ViewModel}}" /> </Grid> //Как мне биндить ModelViewclass.Xmin0 вместо ручного установление Xmin="-5" свойства в UserControl1? Такой биндинг возможен из внешнего источника Xmin="{Binding ElementName=ViewModel, Path=Xmin0}" - хотя для ElementName надо x:Name, а не x:Key Кроме того - ModelViewclass надо инстантицировать, чтобы уже от других контролов получать занчение - возможно ли это сделать через простое создание обьекта ModelViewclass mv=new ModelViewclass() в MainWindow.xaml.cs (то есть code-behind главного окна) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 02:17 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Что никто не подскажет как привязать несколько dependency property к viewmodel property? В приведенном xаml биндинг идет к класу, а если делать в коде через datacontext - то к обьекту viewmodel? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 13:20 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Лично мне лень ломать глаза о твой неоформленный код, освой для начала его оформление в сообщениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 14:08 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. В чем проблема то? откройте любой учебник по WPF, проитайте и приходите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 14:28 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
уточнил <Window> <Window.Resources> <local:ModelViewclass x:Key="ViewModel"/> </Window.Resources> <Grid x:Name="mainGrid"> <local:UserControl1 x:Name="Chart" Xmin="{Binding XMin}" Xmax="{Binding XMax}" DataContext="{StaticResource ViewModel}" /> </Grid> </Window> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 14:28 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, Да это все кажется действительно просто, но даже так - возникла какая то непонятная ошибка при биндинге обозначеных мною депенденси пропертис, которая не присуща на встроеных свойствах usercontrol. "A 'Binding' cannot be set on the 'Xmin' property of type 'Chart'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject." - XamlParseException. Все сделал как у вас <Grid x:Name="mainGrid"> <local:UserControl1 x:Name="Chart" Xmin="{Binding XMin}" /> </Grid> кроме того как привязал к датаконтексту в коде: public MainWindow() { InitializeComponent(); ModelViewclass mvclass = new ModelViewclass(); mvclass.Xmin = "1"; DataContext = mvclass; } Если биндить к датаконтексту тоже в xaml - таже ошибка. Очень странно -- UserControl ведь наследует DependencyObject, а DependencyProperty как раз призначена для внешнего биндинга - да и разписал я эти зависсимые свойтсва правильно, и если вручну раставлять их Xmin="1", то работает же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 03:35 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Вот интересно, что почти день потратил на разрешение последнего простого вопроса (ошибка была, что DP OwnerType имел предыдущее название класа контрола), как появился еще более тривиальный. Теперь не биндится (не передается) ModelViewclass.Xmin в XminDP, если присваивать датаконтекст в коде - просто появляется дефолтное значение. Если присваивать datacontext через xaml - то есть не обьекту VM, а класу VM - то отображается "пустота", что значит что якобы биндинг осуществлен через DataContext="{StaticResource ViewModel}", но я так понимаю в надо вложить здесь необязательный обьект Model из значениями..., ибо поля класа VM конечно неинициализированы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 04:26 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Неразрешимая какая то ситуация? Даже не происходит биндинг viewmodel к встроенному свойству UC background. Менял местами Initializecomponent() и Datacontext=VM object; Даже если в описание Dependencyproperty изменить дефолтное значение оно после ребилдинга, клининга, перезагрузки VS 2012 и потом OС не отображается ? Как и ничего не дает удаление папок Debug. Такая ситуация была однажды с эклипсом но это другой IDЕ, язык програмирование. Если в xаml биндинг происходит декларативно на этапе компиляции к Pаth, значение которой прямо привязывается к VМ property на этапе исполнения может в этом проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 21:42 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtМенял местами Initializecomponent() и Datacontext=VM object;Колесо пинал, на клаксон нажимал - все равно машина не заводится вы идете куда-то совсем не тем путем, чем дальше, тем глубже. суда по последнему высказыванию, ваш предыдущий опыт Явы только во вред, а не в помощь. задача вроде была совершенно прикладная, зачем насиловать фреймворк? arrtУ меня такой вопрос по поводу кастомного контрола. Если мне надо сделать график некой функции (с выбором параметров линии таких как цвет, толщина, тип и толщина шрифта) какой контрол наследовать - control или canvas? Если в этом контроле есть кроме самой линии/функции, линии ординат, текстовые надписи к ординатам, паралельные ординатам линии - может это надо применять usercontrol как групировку нескольких существующих компонентов, или в custom control можно тоже использовать вложенные компоненты в xaml-разметке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 22:01 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Мои последние вопросы касаются разрешения проблемы биндинга в самом простом варианте. Может создание нового проэкта и копирование существующего кода в аналогичные класы и файлы поможет? Эклипс и Ява здесь не причем - это лиш указание на то что проэкт не оновляет данные и как бы ссыллается на прежний вариант. Если я указываю что новое значение для dependency свойства (дефолтное значение записанное в коде) например Y1, a на выходе програма постоянно показывает вчерашнее значение Y, то это свидетельствует о проблемах в работе VS... Хотя прямого отношение это не имеет к биндингу, хотя может доказывать что и другие функции не работают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 03:33 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtо проблемах в работе VS...ну дак тест давай с минимальным количеством строчек. Нельзя же проблему так долго решать. Надо обходить ее и решать другим методом. Всегда есть несколько методов решения одной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 08:48 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Petro123, Ну текст фактически предоставлен выше если имеется ввиду mainwindow.xaml и mainwindow.xaml.cs. То есть так назначение свойств работает ... Xmin="1" а так нет -- Xmin="{Binding MVproperty}. Может действительно на этапе исполнение биндинг не происходит. Еще есть момент что у меня VM идет как поле в Mainwindow. MainWindow:Window { ViewModel vm; MainWindow() { InitializeComponent(); vm=new ViewModel(); vm.Xmin="1"; DataContext=vm;// Хотя во всех примерах VM уже с готовыми свойствами - DataContext=new ViewModel(); - но кроме этого простого биндинга мне надо чтобы другие UI апдейтили VM через события, а VM соответственно - usercontrol через биндинг и propertychange(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 10:05 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtпредоставлен вышену дак еще раз представь. Никто читать твои страницы не будет. Причем в двух видах. Прямо в ветке текстом и в аттаче. Если ты заинтересован в решении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 10:15 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtто это свидетельствует о проблемах в работе VSпять баллов. Разбираться, как работает ДП не буду - это всё студия виновата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 11:47 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtНу текст фактически предоставлен выше если имеется ввиду mainwindow.xaml и mainwindow.xaml.cs.На котором что-то привязано к какому-то неизвестному юзерконтролу. Я несколько дней назад просил выложить тестовый проект, содержащий только проблему, но вы продолжаете пытаться описывать закат на пальцах и грызть кактус. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 11:49 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtЭклипс и Ява здесь не причемпричем тот момент, что за счет предыдущего опыта программирования вы считаете, что нефиг читать учебник, все и так понятно. А то, что это работает не так, как в эклипсе - это значит виноват IDE, а не кривой код и нежелание разобраться в новом фреймворке и приемах работы с ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 11:52 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
О DP я уже начитался. Вот новый нюанс - если применить биндинг к DataContext к Button, помещенном в добавок к UserControl в главное окно - то на кнопке биндинг работает!! <Button Content="{Binding Xname}" - на этапе исполнение название кнопки появляется в отличие от надписей на UC. То есть не происходит биндинг на моем UC. Но DataContext ведь наследуется и на дочерний компонент UC, и там я это свойство обозначал. Часть шаблонных готовых текстовых блоков в UC заблаговременно имеет биндинг к DP самого UC - <Textblock Text="{Binding Path=Xname}" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 13:22 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
A то что VS работает кособоко это факт - например отображается старое дефолтное значение надписи оси Х, и его теперь невозможно переопределить в xаml главного окна, надпись на оси Y - пока что переопределяется вручную. Хотя в общем теперь проблема более узкая - отсутсвие биндинга к DP юзер контрола. Наверное новый проэкт с тем же кодом помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 13:34 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, дак тесты будут или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 13:46 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, Когда гуманитарий занимается программированием... Был бы хоть поэт, глядишь ентер бы использовал, а то прозаик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 15:02 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
refregКогда гуманитарий занимается программированием... Был бы хоть поэт, глядишь ентер бы использовал, а то прозаик5 баллов! Был бы художник - использовал бы еще форматирование кода ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 15:21 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
я просто не понимаю о чем пишет автор, если честно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 22:37 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
не переживай, никто не понимает самое плохое (для ТС), что сам он думает, что все понятно объяснил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 23:09 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Думаю вы зря так утрируете. Теперь самое интересно после разрешение начального биндинга к ViewModel (были некии механические ошибки). Динамический биндинг (onpropertychanged) не происходит к внутренним компонентам Usercontrol. То есть Background={"Binding Colour"} происходит при изменение значения вследствие события, а Xname="{Binding Xnameaxis}" от которого зависит внутренний компонент <Tеxtbox Text="{Binding Xname}" не происходит - что надо сделать чтобы изменение свойств тоже отображалось на внутренние элементы? Вроде вопрос предельно прост. Вот после этого и задание будет сделано - хотя времени 0. В атрибуте Binding есть такие события как notifyontargetupdate, updatesourcetrigger, bindingdirectlytosource но их применение на DP юзерконтрола и свойстве Tеxt внутреннего компонента Texbox ничего не меняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 23:17 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Если не поняли моего последнего вопроса - dependency property (в том числе зависимые свойства вложенных компонентов, что надо отобразить) биндится теперь у меня лиш раз, а вот апдейт VM не отображается на них, хотя встроенные свойства апдейтятся. Вот примеры подобных вопросов их которых трудно понять как разрещить это. http://www.eidias.com/blog/2015/7/16/why-does-the-binding-get-updated-only-once-in-wpf-user-control https://stackoverflow.com/questions/4470440/dependencyproperty-in-my-usercontrol-fails-to-update-bound-property-in-viewmodel (здесь не работает обратный апдейт) https://stackoverflow.com/questions/15616568/wpf-changing-the-value-of-a-dependency-property-from-viewmodel То есть дело в присвоение какой то локальной переменной зависимому свойству которое не позволяет получать изменения. И в последнем линке альтернатива - Style.Triggers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 02:29 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtЕсли не поняли моего последнего вопроса -дык ты сам не читаешь что тебя спрашивают. Научись слушать. Иначе у тебя блог, где ты сам с собою что то там разрабатываешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 07:24 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Petro123, вам какие тесты надо? График отображается - ошибок нет - тогда не происходил биндинг, после устранение механических ошибок биндинг происходит, а вот апдейт нет. То есть измение теряются в xаml на уровне uc (например background апдейтися), и не доходят до уровня ниже - tеxblock. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 09:47 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtPetro123, вам какие тесты надо?мне ничего не надо. Вам возможно надо? Тогда как в ВУЗе - коротко формулировка проблемы и код. Ну или новый топик заведите. IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 09:58 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, вы как будто специально троллите. Как в старинной развлекухе - подойти к незнакомому человеку на улице и спросить "извините, вы не подскажете, я правильно иду"? Так и тут - вы просто жалуетесь на какой-то код, который у вас не работает. Можете жаловаться дальше - смысла не будет никакого. Не видя кода, не имея возможности воспроизвести его у себя - никто вам не поможет. Проблему можно было решить на второй день, а вы тут вторую неделю сами с собой разговариваете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 10:02 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Пояснять все детально смысла не было ибо времени нет, и это не мой домашний проэкт - да и вначале вопрос был - возможно ли этот график сделать как custom control - что очевидно не так (хотя я могу ошибатся). Теперь остался наверное самый важный вопрос - биндинга, но биндинга изменений (апдейтов) от VM внутренних компонентов контрола. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 13:18 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtТеперь остался наверное самый важный вопрос - биндинга, но биндинга изменений (апдейтов) от VM внутренних компонентов контрола.значит убираете из головы все графики и опять таки формулируете вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:00 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Petro123, Честно говоря у меня один вопрос только его переформулирую. Здесь как оказывается дело не в апдейте, а в отсутвие биндинга User Control Dependency Property и свойствами Texbblock (например) внутри самого UserControl.xaml MainWindow.xaml -- <Window... <local:Chart .. //UserControl в главном окне -- Chart:UserControl Xname={Binding Xnameaxis} // Xnameaxis - свойство в ViewModel связано через DataContext Chart.xaml -- <UserControl Name="chart" ...<Textblock Text={Binding Xname} // Шаблонный код очевидно неправильный ибо надо //ссылку на родительський контрол //{Binding Xname, ElementName=Parent} //{Binding Xname, ElementName=chart} //{Binding Xpath, RelativeSource= {RelativeSource Mode=FindAncestor,AncestorType={x:TypeUserControl}}} Но и так не работает - просто биндинг без апдейта. Он у меня вчера заработал ибо в самом коде Chart.cs есть присвоение от этой DP к Textblock name - непонятно для чего, но шаблон взят из самой профильной книги о WPF Charts - если закоментировать то биндинг к внутреннему элементу UC пропадет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 19:49 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
И разрешением этой проблемы будет разве создание нового проэкта с этим же кодом и структурой - как писал ранее. Дело может быть вот в чем. Я пару дней назад переименовал имена файлов xaml, cs - созданных для User Control - назывались они например Linedata.xaml. Потом переименовал в Chart.xaml/Chart.xaml.cs И вот заметил в Chart.xaml.cs - при автозаполнение переменных при наборе this. выскакивает подсказка - Interaction logic for Linedata.xaml - хотя наверное надо было - Interaction logic for Chart.xaml -- вот поэтому наверное нету внутреннего биндинга к компонентам от Window.xaml к Chart.xaml. Не знаю где может хранится ссылка на предыдущий xaml. Вот где главная ошибка надеюсь скрывается, после разрешение которой может возникнуть снова проблема аплейта биндинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 20:03 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Даааааа.... изменение xml-комментария безусловно повлияет на байндинг Похоже, ТС интересен процесс, а не результат Наши реплики его не интересуют мы может просто рассказывать анекдоты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 20:28 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Так в чем может быть причина отсутствие внутреннего биндинга, варианты решения привел? Могу привести дюжину подобных вопросов из интернета. В одном, помню автор вопроса написал что xType UserControl не работает но xTypе props:UCclass заработало. Но у меня nаmеspаcе не имеет класа Chаrt, а сам xType Chart вызывает ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 21:15 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, для биндинга к свойствам класса окна, используйте относительный биндинг с поиском по Типу окна, либо задайте элементу <Window> имя и используйте binding по ElementName (как не надо делать) Код: xml 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 22:39 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, Здесь такая иерархия биндинга Window<-UC<-Texblock. Потому Аncestor для Tb - UC и здесь биндинг не происходит. То есть DP биндится, а к ней внутренний элемент не биндится. Вообще копировал проэкт на флешку, открывал другим IDЕ - при запуске отображается старое значение Yname- хотя в коде есть лиш новое значение newpropertynevadata(Yname1... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 02:58 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtRoman Mejtes, Здесь такая иерархия биндинга Window<-UC<-Texblock. Потому Аncestor для Tb - UC и здесь биндинг не происходит. То есть DP биндится, а к ней внутренний элемент не биндится. Вообще копировал проэкт на флешку, открывал другим IDЕ - при запуске отображается старое значение Yname- хотя в коде есть лиш новое значение newpropertynevadata(Yname1... Поиску по визуальному дереву, всё равно, что у вас во что вложенно, не надо ввозить других в заблуждение. Если объект находится в визуальном дереве окна, значит оно будет найдено. Если элемент размещен в Popup (и возможно в ToolTip) то может и не сработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 12:19 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Вижу слева это наверное виз. дерево - но таких материй я не использую. Хотел поискать среди файлов проэкта это "укорененное" значение- виндовс 7 не ищет среди контента файлов. Тоже не вижу тулбокса контролов в vs2012. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 16:41 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Мда, ТС учебник по WPF не открывал от слова совсем Зато рассказывает, что VS глючная, не хочет делать того, что не должна. arrt - WPF - это не тот фреймфорк, который можно изучить методом тыка и используя опыт ява-программирования. Добрый совет - прочесть учебник. Непонимание принципов работы WPF сквозило с самого начала топика, но последний пост - это нечто! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 16:57 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Я копировал класы и разметку в новый проэкт. Ничего не меняется. Хотя я создал другой юзер контрол только с 1ой, потом 2ой DP - и два внутренних текстблока биндится (с апдейтом от VМ) -Path=Name, ElementName=UCName// Просто Pаrеnt не работает ибо это Grid. Но на моем старом uc это не идет. Может дело что там идут перекрестные ссылки во вложенные класы UserControlclass, где например значение textblock инициализируется от Хname, Yname, Title на чем я и тестирую работу. А еще есть свойств линий и шрифтов. Может все в один клас юзерконтрола перенести? Ведь я взял шаблон этих коорд. сеток, линий, надписей - но все переписывать как то не почем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 16:58 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Вы зря меня критикуете, еще раз повторюсь. Вот теперь проблема разрешилась (надеюсь)- дело в том что кроме биндинга надписей в разметке, они были захаркоджены в класах, что было приоритетом при присвоение значений. После закоментирования надписей все заработало. Но с той же DP но другим именем. Удалил ее а старая биндит но без апдейтов, хотя и закоментированые прежнии строки для надписей, биндинг которых я и постоянно тестировал. А вот в хаml (хотя шаблон взят из серьезной книги) тоже есть закавыка - нету ElementName для биндинга (очевидно это преднамеренн сделано). Делайте выводы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 18:02 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
И еще одна возможная проблема это компиляция моего юзерконтрола в dll и потом его возможное использование как обычного компонента. Все прежние работы с wpf я делал с помощью написание xаml разметки, и не вижу у себя тулбокса даже в VS. И после просмотра этой инструкции https://social.msdn.microsoft.com/Forums/en-US/900e1968-d9e5-4d29-a902-50195ed8f4fa/how-to-create-a-dll-from-a-wpf-usercontrol понимаю что многих тамошних компонентов нету в моем wpf solution explorer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 18:20 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtИ еще одна возможная проблема это компиляция моего юзерконтрола в dll и потом его возможное использование как обычного компонента. Все прежние работы с wpf я делал с помощью написание xаml разметки, и не вижу у себя тулбокса даже в VS. И после просмотра этой инструкции https://social.msdn.microsoft.com/Forums/en-US/900e1968-d9e5-4d29-a902-50195ed8f4fa/how-to-create-a-dll-from-a-wpf-usercontrol понимаю что многих тамошних компонентов нету в моем wpf solution explorer. хз, кто то вообще пользуется ToolBox'ом в WPF? я нет, думаю его по умолчанию и нет, потому, что он бесполезен. Отвечать в эту тему больше не буду до тех пор, пока вы не откроете и не почитаете. Ну, а если не откроете и не прочитает, думаю долго вы тут не просидите :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 21:45 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Здесь еще одна проблемка появилась, и то достаточно серьезная. Проблема в том что кроме биндинга значений надо - биндить список координат к Polyline Points (PointCollection). Потому есть необходимость конвертера List<double> (х1,y1,x2,y2, x3,y3) в PointCollection (List<Point>), с приспособлением к параметрам графика. Дополнительная трудность - что конвертер надо определять к внутреннему элементу главного окна - то есть к самому контролу. Вот код конвертера что основан на работающем коде, что вызывает NullPointerexception к инициализатору цыкла - for (i=0; i<coord.count ... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... <UserControl Name="UCon" <UserControl.Resources> <local:Konverter x:Key="PointConverter"/> </UserControl.Resources> ...<Polyline Name="polyline" Points="{Binding Path=Data, ElementName=UCon, Converter={StaticResource PointConverter}}" /> Другой способ отображение изменений линии (координат) это реализация Callback PropertyChanges (DO, args) для UCon Data DP - но в теле метода нету доступа к другим свойствам UserControlclass таким как polyline потому отобразить изменение при изменение внешне-зависимого свойства координат невозможно. Надо создавать другой инстанс UserControlclass, которым не будет никак связан с первым обьектом юзерконтрола. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 03:11 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtЗдесь еще одна проблемка появилась, и то достаточно серьезная. Проблема в том что кроме биндинга значений надо - биндить список координат к Polyline Points (PointCollection).ну, если месяц решаете вопрос, то пробуйте пойти в другую сторону. Сколько строк уже у вас на сегодня? Дайте скрин из сети что вы хотите получить в итоге? Не нобелевка же у вас. Если так трудно, то убирайте биндинг. Рисуйте график с координатными линиями на одном компонентк Холст. По MVVC у вас в вью будет 10 строк и клас с методом График.Нарисуйся(.... Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 08:32 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtДругой способ отображение изменений линии (координат) это реализация Callback PropertyChanges (DO Ещё линии можно рисовать пером по пикселям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 08:35 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Petro123MVVCMVVM) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 08:38 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
имхо, но конвертить надо в Geometry, а Gemotry уже биндить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 12:14 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtesимхо, но конвертить надо в Geometry, а Gemotry уже биндить.смотря что конвертить? Картину художника на Canvas? Это невозможно. Ну и автора тогда уволят за медлителность. Про биндинг, как будто wpf не существует без биндинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 13:14 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
с точки зрения сериализации и хранения, конвертации и прочего, лучше использовать Geometry. Отображать в Canvas в виде Path элементов. Сами координаты могут быть Начиная от потока, заканчивая простой строкой. Геометрии можно комбинировать и группировать и производить трансформации. Вообще svg, ai форматы легко портируются в XAML разметку. Дизайнер делает картинку. еще очень удобно использовать Shape'ы. Обычно векторная графика используется для создания сложных по составу элементов управления, типа графы, графики, карты д.р. В остальных случаях можно всегда обойтись готовым набором шейпов, на скорую руку закинутый PathGeometry для отображения векторной иконки и рисованием линий, прямоугольников и прочей ереси, что мы делает каждый день. https://drive.google.com/file/d/1xSj28uRBmxmGjjf7gkvDAweDWlph5ZXH/view?usp=sharing вот примерчик, давно валяется, может поможет чем, чтоб разобраться как работать с векторной графикой, сложного типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 14:30 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, Да. Тут надо смотреть кто с чем умеет работать, и от задачи (привет автору что до сих пор скрина нету). У меня лично проекты ГИС были, где рисовалось на канве. А также на HDC хоть принтера. Руками с WinAPI. Я точно вижу что с биндингом автор закопался. А с MVVM без биндинга он уйдет работать))))) Т.к. класс рисования будет отдельно от вью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 14:47 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Ну и вы строптивые - скрин уже как неделю есть. И полтысячи строк в класе. Мне этого уже может и не надо. Но чтобы не доделать переключение между разными линиями... В моем последнем коде все кажется ясно как белый день - но object value - null. Пусть это значение DP ( List<double> или List<Point>). То есть входной параметр в конвертер null - но сама DP - DATA.COUNT >100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 18:46 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrtНу и вы строптивыеты тоже не подарок). arrtскрин уже как неделю есть Где? arrtполтысячи строк Хорошо хоть не много....и время у тебя есть. А биндинг то тебе зачем, если не выходит или студия у тебя кривая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 19:10 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
У меня вопрос был. И код приведен. Вот выдержки из подобного вопроса - сайт не буду привожить. 1)"But when I debug the function Convert I see that the first argument named "value" always gets null." 2) "If value is null, then it's a problem with the binding, not with the converter." 3) "No build error. But at run time my (IValueConverter).Convert method gets passed value=null" Object Value - кажется должен принимать любые типы - то есть причина в моем случае не в типе, хотя я передаю параметризированый список - List<T> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2018, 01:32 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к теме хотелось бы узнать что значит конкретно такой код: textblock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); Size size=textblock.DesiredSize; Что значит Measure с такими параметрами размеров - Double.PositiveInfinity. Это значит что вложенный компонент текстового блока может расширятся к максимально предельным возможным размерам?? Или какая идея применение такой конструкции - лиш определить уже существующие размеры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2018, 01:07 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
arrt, если элемент находится в ScrollViewer'е, или панели StackPanel или любой другой панели или элементе управления у которого нет "границ" для содержимого, то его размеры будут PositiveInfinity. У StackPanel соответственно в том направлении, в котором располагается стопка. В ScrollViewer'е в зависимости от того какая прокрутка доступна. Если Ширина или Высота бесконечна, обычно размер элемента управления вычисляется исходя из его содержимого, либо заданного размера. Size size=textblock.DesiredSize DesiredSize - это предполагаемый размер элемента управления, который задается ему на этапе Measure, на этапе Arrage этот размер берется как предполагаемый и элемент размещается внутри другого в зависимости от его компоновки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2018, 01:38 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Так Measure - это измерение уже существующего размера или его установление? Если второе - тогда почему текстовый блок не занимает максимально возможный размер, если это лиш способ измерить - почему просто не использовать какое то гипотетическое свойство tb.size/desired size? Что если не употреблять DoubleInfinity, a например 0 или его приблизительную длину или ширину? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 11:15 |
|
||
|
WPF + CustomControl + TextBox
|
|||
|---|---|---|---|
|
#18+
Непросто читать. Вначале понятно что сама система wpf определяет размеры, и не всегда они могут быть желаемыми. И в конце написано если есть баттон на 50*50 - и поместить в грид размеры которой меньше, то кнопка будет обрезана - но в конце концов все будет выглядеть как надо? То есть я понял если Size.DoubleInfinity то этот компонент займет все пространство элемента обертки, если не будет других элементов в этой ячейче, а если будет то непонятно какой будет результат, как элементы-потомки будут определять нужные им размеры с помощью рекурсии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2018, 18:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=21&tid=1440415]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 363ms |

| 0 / 0 |
