powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF + CustomControl + TextBox
25 сообщений из 92, страница 2 из 4
WPF + CustomControl + TextBox
    #39631817
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже в примере привел вариант, как можно привязаться к событиям элементов управления шаблона.
это делается либо через TemplatePart, либо через RoutedEvents.
в Generic.xaml недолжно быть никаких событий, xaml определяет вид, а не поведение. в Xaml можно обрабатывть RoutedEvent для анимации и EventTrigger'ов и всё.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631871
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 это ничего не меняет.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631891
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
вот я добавил другой такой же customcontrol2 разметка которого добавилась в тот же generics.xaml и изменил x:class ... customcontrol2. Та же ошибка с partial modifier. Даже не добавлял второй кастом контрол в главное окно разметки.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39632124
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому, что вы фигню делайте.
У Generic.xaml файла не может быть CodeBehind файла\класса, не может быть атрибута x:Class, такое атрибут может быть, если вы инстанцируйте окно или элемент управления как корневой элемент XAML файла.
А generic.xaml это ResourceDictionary, у файла ресурсов не может быть CodeBehind файла априори.
Вы городите ерунду и пытаетесь это преодолеть, но это невозможно, так как концептуально неверный подход.
Еще раз объясните, какие целей вы пытаетесь достигнуть, что конкретно реализовать и вам подскажут, что нужно сделать.
повторюсь, корневой элемент ResourceDictionary файла generic.xaml не может содержать атрибута x:Class="".
Этот атрибут можно задать, только если корневым элементом XAML файла является элемент управления.
Window, UserControl или любой другой.

Добавлю, что такая практика (использования CodeBehind классов) в WPF считается каменным веком и не используется. Еще не было не 1 случая в моей практике, когда мне были бы нужны эти файла и Partial классы.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39632133
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39632136
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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; ...
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39633359
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt, Я использовал wpf на базовом уровне потому вопросы может и простые. Но в даном случае мне надо знать как передать измененные данные в VM в этот usercontrol/customcontrol. Как организировать передачу внешних даных через событие - ведь VM не должно знать ничего о viеw. Если например в аргументах передается параметр doublе, в юзерконтрол - как отличить параметр fontsize и linethickness если они одного типа? Как организировать callbackfunction в dependency property, или как провести биндинг нескольких dependency property UC к обьекту VМ?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39633465
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы получить ответ на основание практического кода:
<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 главного окна)
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39633733
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что никто не подскажет как привязать несколько dependency property к viewmodel property? В приведенном xаml биндинг идет к класу, а если делать в коде через datacontext - то к обьекту viewmodel?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39633776
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне лень ломать глаза о твой неоформленный код, освой для начала его оформление в сообщениях.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39633790
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Window.Resources>
<Window>
	<Window.Resources>
		<local:ModelViewclass x:Key="ViewModel"/> //Modelviewclass:INotifyProperyChange - клас свойств которого должны передаватся через биндинг в UserControl1
	</Window.Resources>
	<Grid x:Name="mainGrid">
		<local:UserControl1 x:Name="Chart" Xmin="{Binding XMin}" Xmax="{Binding XMax}" DataContext="{Binding Source={StaticResource ViewModel}}" />
	</Grid>
</Window>


В чем проблема то? откройте любой учебник по WPF, проитайте и приходите
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39633791
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточнил
<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>
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634052
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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", то работает же.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634053
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот интересно, что почти день потратил на разрешение последнего простого вопроса (ошибка была, что DP OwnerType имел предыдущее название класа контрола),
как появился еще более тривиальный.
Теперь не биндится (не передается) ModelViewclass.Xmin в XminDP, если присваивать датаконтекст в коде - просто появляется дефолтное значение.
Если присваивать datacontext через xaml - то есть не обьекту VM, а класу VM - то отображается "пустота", что значит что якобы биндинг осуществлен через
DataContext="{StaticResource ViewModel}", но я так понимаю в надо вложить здесь необязательный обьект Model из значениями..., ибо поля класа VM конечно неинициализированы
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634248
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неразрешимая какая то ситуация? Даже не происходит биндинг viewmodel к встроенному свойству UC background. Менял местами Initializecomponent() и Datacontext=VM object; Даже если в описание Dependencyproperty изменить дефолтное значение оно после ребилдинга, клининга, перезагрузки VS 2012 и потом OС не отображается ? Как и ничего не дает удаление папок Debug. Такая ситуация была однажды с эклипсом но это другой IDЕ, язык програмирование. Если в xаml биндинг происходит декларативно на этапе компиляции к Pаth, значение которой прямо привязывается к VМ property на этапе исполнения может в этом проблема?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634257
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtМенял местами Initializecomponent() и Datacontext=VM object;Колесо пинал, на клаксон нажимал - все равно машина не заводится

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

задача вроде была совершенно прикладная, зачем насиловать фреймворк?
arrtУ меня такой вопрос по поводу кастомного контрола. Если мне надо сделать график некой функции (с выбором параметров линии таких как цвет, толщина, тип и толщина шрифта) какой контрол наследовать - control или canvas? Если в этом контроле есть кроме самой линии/функции, линии ординат, текстовые надписи к ординатам, паралельные ординатам линии - может это надо применять usercontrol как групировку нескольких существующих компонентов, или в custom control можно тоже использовать вложенные компоненты в xaml-разметке?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634285
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мои последние вопросы касаются разрешения проблемы биндинга в самом простом варианте. Может создание нового проэкта и копирование существующего кода в аналогичные класы и файлы поможет? Эклипс и Ява здесь не причем - это лиш указание на то что проэкт не оновляет данные и как бы ссыллается на прежний вариант. Если я указываю что новое значение для dependency свойства (дефолтное значение записанное в коде) например Y1, a на выходе програма постоянно показывает вчерашнее значение Y, то это свидетельствует о проблемах в работе VS... Хотя прямого отношение это не имеет к биндингу, хотя может доказывать что и другие функции не работают
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634289
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtо проблемах в работе VS...ну дак тест давай с минимальным количеством строчек.
Нельзя же проблему так долго решать. Надо обходить ее и решать другим методом. Всегда есть несколько методов решения одной задачи.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634293
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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().
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634295
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtпредоставлен вышену дак еще раз представь.
Никто читать твои страницы не будет.
Причем в двух видах. Прямо в ветке текстом и в аттаче.
Если ты заинтересован в решении.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634318
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtто это свидетельствует о проблемах в работе VSпять баллов. Разбираться, как работает ДП не буду - это всё студия виновата
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634319
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtНу текст фактически предоставлен выше если имеется ввиду mainwindow.xaml и mainwindow.xaml.cs.На котором что-то привязано к какому-то неизвестному юзерконтролу.
Я несколько дней назад просил выложить тестовый проект, содержащий только проблему, но вы продолжаете пытаться описывать закат на пальцах и грызть кактус.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634320
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtЭклипс и Ява здесь не причемпричем тот момент, что за счет предыдущего опыта программирования вы считаете, что нефиг читать учебник, все и так понятно. А то, что это работает не так, как в эклипсе - это значит виноват IDE, а не кривой код и нежелание разобраться в новом фреймворке и приемах работы с ним.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634335
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О DP я уже начитался. Вот новый нюанс - если применить биндинг к DataContext к Button, помещенном в добавок к UserControl в главное окно - то на кнопке биндинг работает!! <Button Content="{Binding Xname}" - на этапе исполнение название кнопки появляется в отличие от надписей на UC. То есть не происходит биндинг на моем UC. Но DataContext ведь наследуется и на дочерний компонент UC, и там я это свойство обозначал. Часть шаблонных готовых текстовых блоков в UC заблаговременно имеет биндинг к DP самого UC - <Textblock Text="{Binding Path=Xname}"
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634338
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A то что VS работает кособоко это факт - например отображается старое дефолтное значение надписи оси Х, и его теперь невозможно переопределить в xаml главного окна, надпись на оси Y - пока что переопределяется вручную. Хотя в общем теперь проблема более узкая - отсутсвие биндинга к DP юзер контрола. Наверное новый проэкт с тем же кодом помочь.
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 2 из 4
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF + CustomControl + TextBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]