Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 14
1

Обработка свойства в собственном элементе WPF

27.04.2014, 16:42. Показов 575. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дорброго времени суток.
В программе решил сделать свой элемент управления, сделал ему свойство для передачи параметра, и свойство обрабатывающее предыдущее.
В итоге на форме отображается переданное свойство, а для обработки всегда передается пустое(0 - для числа)

XAML UserControl
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<UserControl x:Class="customBindng.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="132" d:DesignWidth="142" x:Name="uc">
    <Grid>
        <TextBox Text="{Binding Path=Text, ElementName=uc}" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />
        <TextBox Text="{Binding Path=Id, ElementName=uc}" Height="23" HorizontalAlignment="Left" Margin="12,41,0,0" Name="textBox3" VerticalAlignment="Top" Width="120" />
        <TextBox Text="{Binding Path=Value, ElementName=uc, Mode=OneWay}" Height="23" HorizontalAlignment="Left" Margin="12,70,0,0" Name="textBox1" VerticalAlignment="Top" Width="120"  />
    </Grid>
</UserControl>
Код UserControl
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
namespace customBindng
{
    public partial class UserControl1 : UserControl
    {
        public int Id { get; set; }
        public string Value
        {
            get
            {//функция с входным значением Id
                if (Id == 0)
                    return "Zero!"; 
                else if (Id == 1)
                    return "One!";
                else
                    return "WTF!";
            }
            
        }
        public string Text
        {
            get;
            set;
        }
        public static readonly DependencyProperty IdProperty = DependencyProperty.Register
            ("Id", typeof(int), typeof(UserControl1), new PropertyMetadata(2));
        public static readonly DependencyProperty TextProperty = DependencyProperty.Register
            ("Text", typeof(string), typeof(UserControl1), new PropertyMetadata("error"));
        public UserControl1()
        {
            InitializeComponent();
        }
    }
}
Добавление на форму
XML
1
<my:UserControl1 Id="{Binding fInt}" Text="{Binding fStr}"  />
Инициализция данных
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public partial class MainWindow : Window
    {
        struct sd
        {
            public int fInt
            {
                get { return 1; }
            }
            public string fStr
            { 
                get { return "Ok"; } 
            }
        }
       
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new sd();
        }
    }
Как обратиться к свойсву Id из Value?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2014, 16:42
Ответы с готовыми решениями:

Проблема с привязкой свойства в собственном компоненте
Приветствую. Я столкнулся с проблемой. Есть свой компонент: &lt;UserControl...

Свои свойства объекта WPF
Я создал в WPF кнопку со своим стилем. Можно ли как нибудь этой кнопке добавить свойстве, которого...

Замена свойства chekbox.Uid из WPF в Sliverlight
Здравствуйте. Переделываю проект из WPF в Sliverlight. Столкнулся с такой проблемой, в проекте WPF...

Как правильно написать свойства окна в wpf?
подскажите как правильно описать свойства окна, чтобы они работали? public partial class...

3
54 / 54 / 14
Регистрация: 18.04.2014
Сообщений: 170
27.04.2014, 17:04 2
как я понимаю вы хотите смочь написать в коде MyControl.Value.ID?
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
27.04.2014, 17:15 3
Учитывая, что Вы неверно создали wrapper для Dependency свойств, то все верно Вам возвращается.
Пример с правильной реализацией
0
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 14
27.04.2014, 23:46  [ТС] 4
Spawn, спасибо исправил на
C#
1
2
3
4
        public int Id { 
            get { return (int)this.GetValue(IdProperty); } 
            set { this.SetValue(IdProperty, value); } 
        }
Но теперь значение в Value берется указанное при инициализации DependencyProperty IdProperty - в примере = 2
а передается 1, и в тексбокс выше выводится "1"
0
27.04.2014, 23:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2014, 23:46
Помогаю со студенческими работами здесь

[WPF] Свойства цвета для Polygon gmap.net
Добрый день, может кто сталкивался или знает как помочь, заранее благодарен! Использую библиотеку...

WPF. Как привязать свойства макета элементов друг к другу с возможностью прибавления какой то величины?
У меня есть textBox1, который растягивается вместе с окном и налазит на элементы (textBox2),...

Обработка событий WPF
re.MouseDown += new MouseButtonEventHandler(re_MouseDown); re.MouseDown += re_MouseDown; Есть...

Обработка событий в textbox wpf
Вечер добрый. Работаю с wpf, не могу правильно создать событие, связанное с щелчком мыши по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru