Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / UserControl и MVVM / 2 сообщений из 2, страница 1 из 1
08.10.2013, 17:06
    #38420644
KYJIBEPCTYKAC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и MVVM
А вообще, кстати, как надо правильно писать? Есть юзерконтрол, хочется его использовать в качестве черного ящика, у него есть депенденси проперти, объявленное в коде:

Код: 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.
    public partial class OrgSelect : UserControl
    {
...
        [
        Bindable(true),
        Category("Прикладные"),
        DefaultValue("Normal"),
        Description("Идентификатор организации"),
        ]
        public int orgID
        {
            get { return (int)GetValue(orgIDProperty); }
            set { SetValue(orgIDProperty, value); }
        }
        public static readonly DependencyProperty orgIDProperty =
            DependencyProperty.Register("orgID", typeof(int), typeof(OrgSelect), new FrameworkPropertyMetadata(0, ChangedorgID)
            {BindsTwoWayByDefault = true, DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged});
        static void ChangedorgID(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            //(d as OrgSelect);
            ...
        }

...
}



В контроле есть ViewModel, созданный в разметке:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<UserControl x:Class="Elcom.OrgSelect"
             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" 
             xmlns:elcom="clr-namespace:Elcom"
             mc:Ignorable="d" 
             d:DesignHeight="40" d:DesignWidth="600" 
             x:Name="ORGSEL">
    
    <UserControl.DataContext>
        <elcom:OrgOtdViewModel x:Name="orgotdviewmodel" iorgid="{Binding Path=orgID, ElementName=ORGSEL, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
    </UserControl.DataContext>
....
</UserControl>



Байндинга при таком подходе не происходит, свойство вьюмодели со свойством контрола не связывается.
...
Рейтинг: 0 / 0
15.10.2013, 12:43
    #38427993
@k@DElpher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и MVVM
Если я правильно понял, вы должны
в самом контроле биндинг настраивать

Код: xml
1.
2.
<UserControl x:Class="Elcom.OrgSelect" ...
orgID="{Binding iorgid}" ...



А в UserControl.DataContext просто оставить
Код: xml
1.
<elcom:OrgOtdViewModel />


Если ViewModel сама может себя создать
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / UserControl и MVVM / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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