Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=39634053&tid=1440415]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 157ms |

| 0 / 0 |
