2012-05-02 4 views
0

Я создал очень простой ViewModel, который содержит следующую коллекциюWPF TwoWay ComboBox привязки не обновляя

public ObservableCollection<Reader> Readers 
    { 
     get 
     { 
      if(_readers == null) 
      { 
       _readers = new ObservableCollection<Reader>(); 
      } 

      return _readers; 
     } 

     set 
     { 
      _readers = value; 
     } 
    } 

и когда сборщик числа изменяется я добавить читатель к коллекции, как так:

_activeServer.Readers.Add(Readers.Instance.AllReaders[0]); 

Я поставил DataContext как класс, содержащий коллекцию читателей и я пытаюсь связать ListBox из ComboBoxes к элементам следующим образом:

<ListBox Name="_lbLanes" 
        BorderThickness="0" 
        Height="200" 
        ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
        ItemsSource="{Binding Readers}" > 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <ComboBox Name="_cbReaders" 
           Margin="0,0,0,10" 
           ItemsSource="{Binding Source={x:Static models:Readers.Instance}, Path=AllReaders}" 
           DisplayMemberPath="Name" 
           SelectedItem="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
           MinWidth="400"> 
         </ComboBox> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 

       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation="Vertical"/> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
      </ListBox> 

Вы можете видеть, что я привязываюсь к себе и установил режим TwoWay.

Кроме того, я попытался SelectedValue, а также SelectedItem быть связанными и оба производят следующую задачу ...

Когда я нажимаю сохранить, чтобы зафиксировать страницу проверить содержимое коллекции Readers для пункта и все устанавливаются на его начальное значение, которое равно Readers.Instance.AllReaders [0] , что было бы правильно, я думаю, если бы я не хотел использовать двустороннюю привязку, но я это делаю, возможно ли это, или я должен пойти и вручную получить элементы, выбранные во всех списках?

Спасибо заранее за нашли время, чтобы ответить

Dan

ответ

0

Я не думаю, что вы можете связать TwoWay как это.

Возможно, this - это то, что вы хотите.

И только потому, что «двусторонняя привязка требует Path или XPath». не означает, что вы должны установить его на одно значение. Вы действительно должны создать конкретный объект для своего ListBox, который будет содержать Reader как свойство.

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