Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Bind к свойству элемента коллекции объявленной в xaml  [new]
Iber
Member

Откуда:
Сообщений: 277
Есть UserControl со свойством - коллекцией класса Item, у Item есть dep property Name. Есть ViewModel, свойство, которой нужно забайндить в Name Item'а. ViewModel лежит в DataContext UserControl'а.

Код:

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; }
}


<wpfApplication6:UserControl1 x:Name="userControl">
            <wpfApplication6:UserControl1.Items>
                <wpfApplication6:Item Name="{Binding Name, RelativeSource={RelativeSource FindAncestor,   
                 AncestorType=wpfApplication6:UserControl1}}" />
            </wpfApplication6:UserControl1.Items>
</wpfApplication6:UserControl1>


Собсно такой байндинг не работает. Подскажите как можно забайндить в данном случае?
29 авг 13, 21:44    [14773129]     Ответить | Цитировать Сообщить модератору
 Re: Bind к свойству элемента коллекции объявленной в xaml  [new]
maratoss
Member

Откуда: от верблюда
Сообщений: 137
Iber, мб так, не?

<wpfApplication6:Item Name="{Binding DataContext.Name, RelativeSource={RelativeSource FindAncestor,   
                 AncestorType=wpfApplication6:UserControl1}}" />
29 авг 13, 22:13    [14773240]     Ответить | Цитировать Сообщить модератору
 Re: Bind к свойству элемента коллекции объявленной в xaml  [new]
Iber
Member

Откуда:
Сообщений: 277
Не, так тоже пробовал, elementName тоже не работает(
29 авг 13, 22:18    [14773247]     Ответить | Цитировать Сообщить модератору
 Re: Bind к свойству элемента коллекции объявленной в xaml  [new]
KYJIBEPCTYKAC
Member

Откуда:
Сообщений: 3
А вообще, кстати, как надо правильно писать? Есть юзерконтрол, хочется его использовать в качестве черного ящика, у него есть депенденси проперти, объявленное в коде:

    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, созданный в разметке:

<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>


Байндинга при таком подходе не происходит, свойство вьюмодели со свойством контрола не связывается.
8 окт 13, 17:01    [14940875]     Ответить | Цитировать Сообщить модератору
 Re: Bind к свойству элемента коллекции объявленной в xaml  [new]
KYJIBEPCTYKAC
Member

Откуда:
Сообщений: 3
Не удержался, видимо, надо было в отдельную тему свой вопрос.
8 окт 13, 17:04    [14940894]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить