powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF + CustomControl + TextBox
92 сообщений из 92, показаны все 4 страниц
WPF + CustomControl + TextBox
    #37301960
Alex Shulg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Пытаюсь реализовать свой контрол, который содержит внутри себя, кроме прочего, 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.
    [TemplatePart(Name = "PART_TextBox", Type = typeof(TextBox))]
    ...
    public class MyControl : Control
    {
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(String), typeof(MyControl),
            new UIPropertyMetadata(null, new PropertyChangedCallback(OnTextChanged)));

        public static readonly RoutedEvent TextChangedEvent =
            EventManager.RegisterRoutedEvent("TextChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyControl));

        private static void OnTextChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            MyControl textBox = o as MyControl;
            if (textBox != null)
                textBox.OnTextChanged((String)e.OldValue, (String)e.NewValue);
        }

        protected virtual void OnTextChanged(String oldValue, String newValue)
        {
            this.RaiseEvent(new RoutedEventArgs(MyControl.TextChangedEvent, this));
        }

        public String Text
        {
            get { return (String)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        public event RoutedEventHandler TextChanged
        {
            add { AddHandler(TextChangedEvent, value); }
            remove { RemoveHandler(TextChangedEvent, value); }
        }

        ... разное другое
    }
Generic.xaml расписан так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    <Style TargetType="{x:Type local: MyControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local: MyControl }">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <DockPanel LastChildFill="True" >

                            ...

                            <TextBox x:Name="PART_TextBox" 
                                     Text="{Binding Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource TemplatedParent}}"
                                     BorderBrush="{x:Null}" BorderThickness="0" VerticalAlignment="Center" />
                        </DockPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

В приложении (xaml) использую так:
Код: plaintext
<MyControls:MyControl Text="{Binding Path=MyClass.Text, UpdateSourceTrigger=PropertyChanged, RelativeSource={...}}" /> 
В результате все отображается как надо, TextBox внутри MyControl отображает MyClass.Text, но при изменении строки в интерфейсе, изменения не доходят до MyClass.Text (значение остается прежнее). При этом если использовать просто TextBox:
Код: plaintext
<TextBox Text="{Binding Path=MyClass.Text, UpdateSourceTrigger=PropertyChanged, RelativeSource={...}}" />
все работает.
Такое впечатление, что в MyControl я чего-то недописал... Если кто знает в чем может быть проблема, где я чего упустил, подскажите, пожалуйста.

Заранее благодарю.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #37302331
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #37302670
Alex Shulg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за подсказку!!! То что нужно:
Код: plaintext
1.
2.
3.
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(String), typeof(TextBoxButton),
            new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(OnTextChanged)));
сочетание FrameworkPropertyMetadata + FrameworkPropertyMetadataOptions.BindsTwoWayByDefault = работает!!!
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #37302685
Alex Shulg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex ShulgВ приложении (xaml) использую так:
Код: plaintext
<MyControls:MyControl Text="{Binding Path=MyClass.Text, UpdateSourceTrigger=PropertyChanged, RelativeSource={...}}" /> 


Все оказалось проще:
Код: plaintext
<MyControls:MyControl Text="{Binding Path=MyClass.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={...}}" /> 
Забыл установить Mode=TwoWay в привязке!!!

Так что все работает и с UIPropertyMetadata. Но все равно, спасибо, наводка помогла.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
WPF + CustomControl + TextBox
    #39629861
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такой вопрос по поводу кастомного контрола. Если мне надо сделать график некой функции (с выбором параметров линии таких как цвет, толщина, тип и толщина шрифта) какой контрол наследовать - control или canvas? Если в этом контроле есть кроме самой линии/функции, линии ординат, текстовые надписи к ординатам, паралельные ординатам линии - может это надо применять usercontrol как групировку нескольких существующих компонентов, или в custom control можно тоже использовать вложенные компоненты в xaml-разметке?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39630071
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtУ меня такой вопрос по поводу кастомного контрола. Если мне надо сделать график некой функции (с выбором параметров линии таких как цвет, толщина, тип и толщина шрифта) какой контрол наследовать - control или canvas? Если в этом контроле есть кроме самой линии/функции, линии ординат, текстовые надписи к ординатам, паралельные ординатам линии - может это надо применять usercontrol как групировку нескольких существующих компонентов, или в custom control можно тоже использовать вложенные компоненты в xaml-разметке?
Я бы не изобретал велосипед, а взял готовое .
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39630076
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готовое, изобретенное мной, мне надо именно предоставить. Вроде не так уж сложно в теории, если не надо от руки линию рисовать. Хотя очень многокомпонентный контрол должен получиться, и на коудпрожекте он расширяет userproject. Более того там он использует стороннюю библиотеку, которая в первую очередь помогает для биндинга событий, что наверное в моем случае тоже будет ключевым моментом если кроме dependency properties, использовать routed events.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39630109
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Canvas и Path+Geomtry
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39630291
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да canvas может и подойдет но это лейаут. А вот вместо линии графика наверное надо Polyline. Меня интересует лиш то если групировать отдельные конттролы типа квадратной разметки графика, линий ординат, самой линии - возможно ли это все поместить в generic.xaml. Еще одним условием надо использовать несколько dependency properties для свойств графика. Но например здесь https://www.codeproject.com/Articles/49802/Create-a-WPF-Custom-Control-Part идет речь, что кастом контрол не имеет "design surface", и в общем он используется для расширение например одного компонента, в частности кнопки - а у меня мультикомпонентный контрол? Вот бы пример найти такой?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39630305
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtесли групировать отдельные конттролы типа квадратной разметки графика, линий ординат,я не понял.
Обычно сетка координат и т.д. описанное рисуется в динамике и не является отдельными контролами для группировки.
Так можно и буквы группировать из закорючек контролов XAML
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39630411
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть все описание кастомного компонента должно быть в коде, а изменение шрифта, толщины линии будут реализованы через dependency property? Как тогда привязывать внешние события (например изменение шрифта) к этим property? В общем такой вариант приводится даже в целой книги о графиках wpf, но там он идет как user control тоже. Но там тоже есть textblock и т.д. А во всех примерах C.C. это расширение одного контрола, и композиция нескольких других существующих вроде не предполагается.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631250
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если простое наследование Control подходит через добавление к дефолтному Border - Canvas/Grid в качестве потомка. То в последнем случае сразу возникает проблема после необходимости добавление в generic.xaml - x:class="wpfapp.customcontrol" что требует наличие ивент-обработчика. Ошибка такого типа после этого добавления - CustomControl:Control требует partial modifier ибо определение такого класа вроде уже есть. После добавление partial - уже другая ошибка can not be same definition for different base class??
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631314
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xaml должен начинаться с
Код: xml
1.
<wpfapp.customcontrol ....
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631538
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 (сейчас точно не помню) для разных базовых класов??
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631548
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты сейчас пытаешься объяснить жестами, как поёт Паваротти ))

Можешь дать тестовый пример? Только абсолютно тестовый, без всякого постороннего хлама, который не хочет работать. Желательно в виде архива проекта. Тогда можно будет чем-то помочь.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631551
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас есть элемент управления, который вы создали сами
class MyControl : Control
Есть элементу управления которые входят в его шаблон.
Вам нужно получать от них события и обрабатывать внутри этого элемента управления?
зачем вам тогда Behavior класс? я не понимаю
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631561
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может надо переписать generic.xaml полностью. Чтобы он был более похожим на хаml обычного контрола. А все манипуляции этого контрола наверное надо уже будет делать при его добавление в main window - и привязывание его custom properties к custom / routed events - шаблон юзер контрола для хотя бы построение такого графика у меня есть.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631565
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,

Я полностью перестал понимать.
Скорее всего, ты идешь не тем путем.
Ты пытаешься обсуждать не подход к решению какой-то проблемы, а твою (возможно неверную) реализацию этого решения.
Попробуй от печки.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631578
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
customcontrol:control - это клас созданный автоматически
при создание нового customcontrol - new item- wpf... Если бы под рукой был код - но например customcontrol:control на котором выскакивает ошибка pаrtiаl собственно пуст... А generics.xaml - вызывает эту ошибку после добавление x:class - результат стандартного требование если в разметке есть ссылка на обработку события (в этом случае - grid_size_changed).
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631619
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
то есть очевидная проблема в дублирование класа что ли. Может такое быть x:class=customclass быть вторым частичным класом? Но это всего лиш ссылка и в разметке тем более. О каких разных базовых класах может быть речь в последней ошибке- partial customcontrol:control и сам control? Может дебагер может больше подсказать где есть второй скрытый клас, ибо сам компилятор никаких ссылок не предоставляет.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631624
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace WpfApp3
{
    [TemplatePart(Name = "PART_MyTextBox", Type = typeof(TextBox))]
    public class MyControl : Control
    {

        public MyControl()
        {
            //добавляет обработчик команды от кнопки
            CommandBindings.Add(new CommandBinding(MyCommand, OnMyCommand));
            //добавляет обработчик маршрутизируемого события
            AddHandler(TextBox.TextChangedEvent, new RoutedEventHandler(OnTextChanged));
        }

        private void OnTextChanged(object sender, RoutedEventArgs e)
        {
            Debug.Print("Text changned from routed event");

        }

        private void OnMyCommand(object sender, ExecutedRoutedEventArgs e)
        {
            MessageBox.Show("Trololo");
        }

        public static ICommand MyCommand = new RoutedCommand(nameof(MyCommand), typeof(MyControl));

        static MyControl()
        {
            //задаем свой стиль поумолчанию
            DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
        }

        private TextBox _childTextBox;

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            //получает предопределенный элемент шаблона (элемент должен присутствовать в шаблоне и должен быть описан в атрибутах класса)
            _childTextBox = GetTemplateChild("PART_MyTextBox") as TextBox;
            //подписывает на событие этого элемента управления
            _childTextBox.TextChanged += _childTextBox_TextChanged;

        }

        private void _childTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            Debug.Print("Text changned from direct event");
        }
    }
}


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.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:WpfApp3">

    <ControlTemplate x:Key="MyControlDefaultTemplate" TargetType="{x:Type local:MyControl}">
        <Border Background="{TemplateBinding Background}" 
                BorderThickness="{TemplateBinding BorderThickness}"
                BorderBrush="{TemplateBinding BorderBrush}">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <TextBox Grid.Row="0" x:Name="PART_MyTextBox"/>
                
                <StackPanel Grid.Row="1">
                    <Button Content="MyButton" Command="{x:Static local:MyControl.MyCommand}" />
                </StackPanel>
                            
            </Grid>
        </Border>
    </ControlTemplate>

    <Style TargetType="{x:Type local:MyControl}">
        <Setter Property="Template" Value="{StaticResource MyControlDefaultTemplate}"/>
    </Style>
</ResourceDictionary>
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631662
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
Собственно я наследую Control. В нем и есть конструктор static CustomControl{ defaultkeypropert ... Хотя стили здесь никакой роли наверное не играют, кроме если они привязаны к dependencyproperty - надо просто нарисовать график со всеми линиями, чтобы не выскакивали ошибки в том числе последняя. Шаблоный код у меня есть, от usercontrol кстати, и там эта ошибка очевидно не появляется.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631671
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы пишите, что у вас какая то проблема с Partial классом, мне не понятно, от куда она у вас берется, так как в примере моем, не Partial классы, они там не нужны от слова совсем.
Объясните нормально, в чем у вас ошибка, пример с воспроизведенной проблемой в студию.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631760
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, вам наверное проще создать кастомный контрол автоматически, в gеnеric.xаml вставить в бордер, грид, с любым суб- компонентом с ивентом добавить x:clаss, и включить инстанс этого кастом контрола в главный xаml.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39631788
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть помощь нужна вам, но мы должны еще и воспроизводить вашу ситуацию по неясным обрывкам рассуждений, вместо того, чтобы получить от вас тестовый проект?
...
Рейтинг: 0 / 0
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
WPF + CustomControl + TextBox
    #39634341
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
дак тесты будут или нет?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634348
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,

Когда гуманитарий занимается программированием...
Был бы хоть поэт, глядишь ентер бы использовал, а то прозаик
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634351
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregКогда гуманитарий занимается программированием...
Был бы хоть поэт, глядишь ентер бы использовал, а то прозаик5 баллов!

Был бы художник - использовал бы еще форматирование кода )
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634417
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я просто не понимаю о чем пишет автор, если честно.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634429
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не переживай, никто не понимает

самое плохое (для ТС), что сам он думает, что все понятно объяснил
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634432
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю вы зря так утрируете. Теперь самое интересно после разрешение начального биндинга к ViewModel (были некии механические ошибки). Динамический биндинг (onpropertychanged) не происходит к внутренним компонентам Usercontrol. То есть Background={"Binding Colour"} происходит при изменение значения вследствие события, а Xname="{Binding Xnameaxis}" от которого зависит внутренний компонент <Tеxtbox Text="{Binding Xname}" не происходит - что надо сделать чтобы изменение свойств тоже отображалось на внутренние элементы? Вроде вопрос предельно прост. Вот после этого и задание будет сделано - хотя времени 0. В атрибуте Binding есть такие события как notifyontargetupdate, updatesourcetrigger, bindingdirectlytosource но их применение на DP юзерконтрола и свойстве Tеxt внутреннего компонента Texbox ничего не меняет.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634454
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не поняли моего последнего вопроса - 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
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634469
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtЕсли не поняли моего последнего вопроса -дык ты сам не читаешь что тебя спрашивают.
Научись слушать.
Иначе у тебя блог, где ты сам с собою что то там разрабатываешь.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634529
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, вам какие тесты надо? График отображается - ошибок нет - тогда не происходил биндинг, после устранение механических ошибок биндинг происходит, а вот апдейт нет. То есть измение теряются в xаml на уровне uc (например background апдейтися), и не доходят до уровня ниже - tеxblock.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634537
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtPetro123, вам какие тесты надо?мне ничего не надо.
Вам возможно надо?
Тогда как в ВУЗе - коротко формулировка проблемы и код.
Ну или новый топик заведите.
IMHO.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634539
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt, вы как будто специально троллите.
Как в старинной развлекухе - подойти к незнакомому человеку на улице и спросить "извините, вы не подскажете, я правильно иду"?

Так и тут - вы просто жалуетесь на какой-то код, который у вас не работает. Можете жаловаться дальше - смысла не будет никакого. Не видя кода, не имея возможности воспроизвести его у себя - никто вам не поможет. Проблему можно было решить на второй день, а вы тут вторую неделю сами с собой разговариваете.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634714
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пояснять все детально смысла не было ибо времени нет, и это не мой домашний проэкт - да и вначале вопрос был - возможно ли этот график сделать как custom control - что очевидно не так (хотя я могу ошибатся). Теперь остался наверное самый важный вопрос - биндинга, но биндинга изменений (апдейтов) от VM внутренних компонентов контрола.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634758
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtТеперь остался наверное самый важный вопрос - биндинга, но биндинга изменений (апдейтов) от VM внутренних компонентов контрола.значит убираете из головы все графики и опять таки формулируете вопрос.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39634998
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 пропадет.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635010
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И разрешением этой проблемы будет разве создание нового проэкта с этим же кодом и структурой - как писал ранее.
Дело может быть вот в чем.
Я пару дней назад переименовал имена файлов 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.
Вот где главная ошибка надеюсь скрывается, после разрешение которой может возникнуть снова проблема аплейта биндинга.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635017
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даааааа.... изменение xml-комментария безусловно повлияет на байндинг
Похоже, ТС интересен процесс, а не результат
Наши реплики его не интересуют мы может просто рассказывать анекдоты
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635035
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в чем может быть причина отсутствие внутреннего биндинга, варианты решения привел? Могу привести дюжину подобных вопросов из интернета. В одном, помню автор вопроса написал что xType UserControl не работает но xTypе props:UCclass заработало. Но у меня nаmеspаcе не имеет класа Chаrt, а сам xType Chart вызывает ошибку.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635056
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,

для биндинга к свойствам класса окна, используйте относительный биндинг с поиском по Типу окна,
либо задайте элементу <Window> имя и используйте binding по ElementName
(как не надо делать)
Код: xml
1.
2.
<TextBlock Text="{Binding Title, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/>
<TextBlock Text="{Binding Title, ElementName=MyWindow}"/>
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635085
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
Здесь такая иерархия биндинга Window<-UC<-Texblock. Потому Аncestor для Tb - UC и здесь биндинг не происходит. То есть DP биндится, а к ней внутренний элемент не биндится. Вообще копировал проэкт на флешку, открывал другим IDЕ - при запуске отображается старое значение Yname- хотя в коде есть лиш новое значение newpropertynevadata(Yname1...
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635261
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtRoman Mejtes,
Здесь такая иерархия биндинга Window<-UC<-Texblock. Потому Аncestor для Tb - UC и здесь биндинг не происходит. То есть DP биндится, а к ней внутренний элемент не биндится. Вообще копировал проэкт на флешку, открывал другим IDЕ - при запуске отображается старое значение Yname- хотя в коде есть лиш новое значение newpropertynevadata(Yname1...
Поиску по визуальному дереву, всё равно, что у вас во что вложенно, не надо ввозить других в заблуждение.
Если объект находится в визуальном дереве окна, значит оно будет найдено.
Если элемент размещен в Popup (и возможно в ToolTip) то может и не сработать.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635522
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вижу слева это наверное виз. дерево - но таких материй я не использую. Хотел поискать среди файлов проэкта это "укорененное" значение- виндовс 7 не ищет среди контента файлов. Тоже не вижу тулбокса контролов в vs2012.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635530
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, ТС учебник по WPF не открывал от слова совсем
Зато рассказывает, что VS глючная, не хочет делать того, что не должна.

arrt - WPF - это не тот фреймфорк, который можно изучить методом тыка и используя опыт ява-программирования. Добрый совет - прочесть учебник. Непонимание принципов работы WPF сквозило с самого начала топика, но последний пост - это нечто!
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635532
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я копировал класы и разметку в новый проэкт. Ничего не меняется. Хотя я создал другой юзер контрол только с 1ой, потом 2ой DP - и два внутренних текстблока биндится (с апдейтом от VМ) -Path=Name, ElementName=UCName// Просто Pаrеnt не работает ибо это Grid. Но на моем старом uc это не идет. Может дело что там идут перекрестные ссылки во вложенные класы UserControlclass, где например значение textblock инициализируется от Хname, Yname, Title на чем я и тестирую работу. А еще есть свойств линий и шрифтов. Может все в один клас юзерконтрола перенести? Ведь я взял шаблон этих коорд. сеток, линий, надписей - но все переписывать как то не почем.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635576
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы зря меня критикуете, еще раз повторюсь. Вот теперь проблема разрешилась (надеюсь)- дело в том что кроме биндинга надписей в разметке, они были захаркоджены в класах, что было приоритетом при присвоение значений. После закоментирования надписей все заработало. Но с той же DP но другим именем. Удалил ее а старая биндит но без апдейтов, хотя и закоментированые прежнии строки для надписей, биндинг которых я и постоянно тестировал. А вот в хаml (хотя шаблон взят из серьезной книги) тоже есть закавыка - нету ElementName для биндинга (очевидно это преднамеренн сделано). Делайте выводы.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635599
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.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39635690
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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? я нет, думаю его по умолчанию и нет, потому, что он бесполезен.
Отвечать в эту тему больше не буду до тех пор, пока вы не откроете и не почитаете. Ну, а если не откроете и не прочитает, думаю долго вы тут не просидите :)
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636470
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь еще одна проблемка появилась, и то достаточно серьезная.
Проблема в том что кроме биндинга значений надо - биндить список координат к 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.
 public class Konverter : IValueConverter {
 private Point Normalize (Point pt) { ...
 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            List<double> coord = (List<double>)value;
            PointCollection collection = new PointCollection();
            for (int i = 0; i < coord.Count; i += 2)
            {
                double x = coord[i];
                double y = coord[i + 1];
            pcollection.Add(NormalizePoint(new Point(x, y)));
            }
            return pcollection;
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return false;
        }   


...
<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, которым не будет никак связан с первым обьектом юзерконтрола.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636528
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtЗдесь еще одна проблемка появилась, и то достаточно серьезная.
Проблема в том что кроме биндинга значений надо - биндить список координат к Polyline Points (PointCollection).ну, если месяц решаете вопрос, то пробуйте пойти в другую сторону.
Сколько строк уже у вас на сегодня?
Дайте скрин из сети что вы хотите получить в итоге?
Не нобелевка же у вас.
Если так трудно, то убирайте биндинг. Рисуйте график с координатными линиями на одном компонентк Холст.
По MVVC у вас в вью будет 10 строк и клас с методом
График.Нарисуйся(....
Удачи!
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636530
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtДругой способ отображение изменений линии (координат) это реализация Callback PropertyChanges (DO
Ещё линии можно рисовать пером по пикселям.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636533
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123MVVCMVVM)
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636678
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, но конвертить надо в Geometry, а Gemotry уже биндить.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesимхо, но конвертить надо в Geometry, а Gemotry уже биндить.смотря что конвертить?
Картину художника на Canvas?
Это невозможно.
Ну и автора тогда уволят за медлителность.
Про биндинг, как будто wpf не существует без биндинга.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636780
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с точки зрения сериализации и хранения, конвертации и прочего, лучше использовать Geometry.
Отображать в Canvas в виде Path элементов. Сами координаты могут быть
Начиная от потока, заканчивая простой строкой.
Геометрии можно комбинировать и группировать и производить трансформации.
Вообще svg, ai форматы легко портируются в XAML разметку. Дизайнер делает картинку.
еще очень удобно использовать Shape'ы.

Обычно векторная графика используется для создания сложных по составу элементов управления, типа графы, графики, карты д.р. В остальных случаях можно всегда обойтись готовым набором шейпов, на скорую руку закинутый PathGeometry для отображения векторной иконки и рисованием линий, прямоугольников и прочей ереси, что мы делает каждый день.

https://drive.google.com/file/d/1xSj28uRBmxmGjjf7gkvDAweDWlph5ZXH/view?usp=sharing
вот примерчик, давно валяется, может поможет чем, чтоб разобраться как работать с векторной графикой, сложного типа.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636795
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
Да.
Тут надо смотреть кто с чем умеет работать, и от задачи (привет автору что до сих пор скрина нету).
У меня лично проекты ГИС были, где рисовалось на канве. А также на HDC хоть принтера.
Руками с WinAPI.
Я точно вижу что с биндингом автор закопался.
А с MVVM без биндинга он уйдет работать)))))
Т.к. класс рисования будет отдельно от вью.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636962
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и вы строптивые - скрин уже как неделю есть. И полтысячи строк в класе. Мне этого уже может и не надо. Но чтобы не доделать переключение между разными линиями... В моем последнем коде все кажется ясно как белый день - но object value - null. Пусть это значение DP ( List<double> или List<Point>). То есть входной параметр в конвертер null - но сама DP - DATA.COUNT >100
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39636989
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtНу и вы строптивыеты тоже не подарок).
arrtскрин уже как неделю есть
Где?
arrtполтысячи строк
Хорошо хоть не много....и время у тебя есть.
А биндинг то тебе зачем, если не выходит или студия у тебя кривая.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39637072
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня вопрос был. И код приведен.
Вот выдержки из подобного вопроса - сайт не буду привожить.
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>
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39655288
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к теме хотелось бы узнать что значит конкретно такой код: textblock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); Size size=textblock.DesiredSize; Что значит Measure с такими параметрами размеров - Double.PositiveInfinity. Это значит что вложенный компонент текстового блока может расширятся к максимально предельным возможным размерам?? Или какая идея применение такой конструкции - лиш определить уже существующие размеры?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39655291
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,

если элемент находится в ScrollViewer'е, или панели StackPanel или любой другой панели или элементе управления у которого нет "границ" для содержимого, то его размеры будут PositiveInfinity. У StackPanel соответственно в том направлении, в котором располагается стопка. В ScrollViewer'е в зависимости от того какая прокрутка доступна.
Если Ширина или Высота бесконечна, обычно размер элемента управления вычисляется исходя из его содержимого, либо заданного размера.
Size size=textblock.DesiredSize
DesiredSize - это предполагаемый размер элемента управления, который задается ему на этапе Measure, на этапе Arrage этот размер берется как предполагаемый и элемент размещается внутри другого в зависимости от его компоновки.
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39658778
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так Measure - это измерение уже существующего размера или его установление? Если второе - тогда почему текстовый блок не занимает максимально возможный размер, если это лиш способ измерить - почему просто не использовать какое то гипотетическое свойство tb.size/desired size? Что если не употреблять DoubleInfinity, a например 0 или его приблизительную длину или ширину?
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39658781
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
WPF + CustomControl + TextBox
    #39659313
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непросто читать. Вначале понятно что сама система wpf определяет размеры, и не всегда они могут быть желаемыми. И в конце написано если есть баттон на 50*50 - и поместить в грид размеры которой меньше, то кнопка будет обрезана - но в конце концов все будет выглядеть как надо? То есть я понял если Size.DoubleInfinity то этот компонент займет все пространство элемента обертки, если не будет других элементов в этой ячейче, а если будет то непонятно какой будет результат, как элементы-потомки будут определять нужные им размеры с помощью рекурсии.
...
Рейтинг: 0 / 0
92 сообщений из 92, показаны все 4 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF + CustomControl + TextBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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