2013-12-14 2 views
0

У меня есть два классаBind МОФ текстовое поле SelectedItem из ListBox

Class A 
{ 
    public int something { get; set; } 
    public B classB = new B(); 
} 


Class B 
{ 
    public int anotherThing { get; set; } 
} 

У меня есть ObservableCollection из класса А

public ObservableCollection<A> listOfClasses = new ObservableCollection<A>(); 

Теперь у меня есть ListBox, что привязываться к listOfClasses

    <ListBox x:Name="justAList" SelectionMode="Extended"> 
         <ListBox.ItemContainerStyle> 
          <Style TargetType="{x:Type ListBoxItem}"> 
           <Setter Property="Content" Value="{Binding Path=something}"></Setter> 
          </Style> 
         </ListBox.ItemContainerStyle> 
        </ListBox> 

И, конечно, привязка.

justAList.ItemsSource = listOfClasses ; 

До сих пор все работает. Я могу видеть список с его элементами (я добавляю элементы в список с помощью другого метода). Мой вопрос в том, что я хочу иметь еще одно текстовое поле и привязать его к другому типу int в классе B. Как это можно сделать?

+0

Можете ли вы сказать, где текст будет? Но это должно быть '{Binding Path = classB.anotherThing}', если вы планируете добавить его к элементу списка – sanke

+0

. Он будет находиться в другом разделе в панели xaml, stack или wrap. – amirm

ответ

1

Прежде всего, вам нужно make экземпляр class B a property в случае, если вы хотите, связывающую поддержка:

private B classB = new B(); 
public B ClassB 
{ 
    get 
    { 
     return classB; 
    } 
    set 
    { 
     classB = value; 
    } 
} 

И теперь вы можете связываться с TextBox как это:

<TextBox Text="{Binding ClassB.anotherThing}"/> 

Убедитесь, что TextBox DataContext устанавливается в некоторый экземпляр ClassA.

UPDATE

Как уже упоминалось в комментариях, которые вы хотите связать с TextBox TextSelectedItem instance, которое может быть достигнуто таким образом:

<TextBox Text="{Binding ElementName=justAList, 
         Path=SelectedItem.ClassB.anotherThing}"/> 
+0

Я забыл упомянуть, что каждый элемент в спискеOfClasses будет иметь разные значения в текстовом поле, поэтому элемент 1 в спискеOfClasses будет иметь 1 в otherThing int, а элемент 2 будет иметь 2 в anotherThing (например) – amirm

+0

Где именно вы хотите, чтобы этот TextBox был помещен? –

+0

Я не уверен, что понимаю, но я все равно попробую: на другом групповом поле/стеке/wrappanel – amirm

Смежные вопросы