powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Bind к свойству элемента коллекции объявленной в xaml
5 сообщений из 5, страница 1 из 1
Bind к свойству элемента коллекции объявленной в xaml
    #38381717
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть UserControl со свойством - коллекцией класса Item, у Item есть dep property Name. Есть ViewModel, свойство, которой нужно забайндить в Name Item'а. ViewModel лежит в DataContext UserControl'а.

Код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public partial class UserControl1
{
     public ObservableCollection<Item> Items { get; set; }
...

public class Item : DependencyObject
{
     public string Name
     {
          get { return (string)GetValue(NameProperty); }
          set { SetValue(NameProperty, value); }
     }

     public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Item), new     
     PropertyMetadata(null));
}

public class ViewModel
{
     public string Name { get; set; }
}



Код: xml
1.
2.
3.
4.
5.
6.
<wpfApplication6:UserControl1 x:Name="userControl">
            <wpfApplication6:UserControl1.Items>
                <wpfApplication6:Item Name="{Binding Name, RelativeSource={RelativeSource FindAncestor,   
                 AncestorType=wpfApplication6:UserControl1}}" />
            </wpfApplication6:UserControl1.Items>
</wpfApplication6:UserControl1>



Собсно такой байндинг не работает. Подскажите как можно забайндить в данном случае?
...
Рейтинг: 0 / 0
Bind к свойству элемента коллекции объявленной в xaml
    #38381736
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iber, мб так, не?

Код: xml
1.
2.
<wpfApplication6:Item Name="{Binding DataContext.Name, RelativeSource={RelativeSource FindAncestor,   
                 AncestorType=wpfApplication6:UserControl1}}" />
...
Рейтинг: 0 / 0
Bind к свойству элемента коллекции объявленной в xaml
    #38381738
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, так тоже пробовал, elementName тоже не работает(
...
Рейтинг: 0 / 0
Bind к свойству элемента коллекции объявленной в xaml
    #38420637
KYJIBEPCTYKAC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вообще, кстати, как надо правильно писать? Есть юзерконтрол, хочется его использовать в качестве черного ящика, у него есть депенденси проперти, объявленное в коде:

Код: 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
Bind к свойству элемента коллекции объявленной в xaml
    #38420640
KYJIBEPCTYKAC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не удержался, видимо, надо было в отдельную тему свой вопрос.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Bind к свойству элемента коллекции объявленной в xaml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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