2015-12-10 5 views
2

У меня проблема с привязкой всех записей массива к моему ListBox в XAML.Связывание в ListBox с использованием MVVM

XAML:

<ListBox ItemsSource="{Binding ResultFlag}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding TypeInfo}"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

ResultFlag свойство в моем ViewModel (который является DataContext файла XAML):

private ObservableCollection<DataField> _resultFlag; 
public ObservableCollection<DataField> ResultFlag 
{ 
    get { return _resultFlag; } 
    set 
    { 
     _resultFlag = value; 
     OnPropertyChanged(); 
    } 
} 

TypeInfo в DataField классе:

public string[] TypeInfo { get; set; } 

I хотел бы показать все строковые записи из массива выше в ListBox - как мне это сделать? Я пробовал несколько вещей, включая вложенные Listbox и привязывая ItemsSource от ListBox непосредственно к массиву (не работал, BTW)
Приветствия!

+0

Привяжите свою коллекцию к свойству ItemSource .... ListBox.ItemSource = {Binding MyCollection}. Почему я не работал? есть ли ошибка? – CoderForHire

+0

Написал неправильную вещь .. коллекция, содержащая объекты с свойством массива, действительно уже привязана к 'ItemsSource', отредактировала мое сообщение. – zniwalla

+0

Итак, просто чтобы уточнить: ошибок нет. Он работает на одном уровне, но его список массивов я хочу визуализировать. – zniwalla

ответ

1

Что вы имеете в своем сценарии - это список из списка. Чтобы показать, что в вашем списке вы должны иметь вложенные ListBoxes, как это.

 <ListBox ItemsSource="{Binding ResultFlag}" > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <ListBox ItemsSource="{Binding TypeInfo}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding}"/> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
+0

Ya, я пробовал это, но у него есть некоторые недостатки: 1. Это не выглядит очень хорошо с 'ListBox' вокруг' ListBox''es 2. Как связать «SelectedItem» с вложенным «ListBox» 'для свойства в моей ViewModel? – zniwalla

+0

Если вы беспокоитесь о внешности, то вы можете определенно изменить его, применив стиль, который вам нравится. XAML очень эффективен в этом. Что бы вы имели в виду, если 'ResultFlag', который является' ObservableCollection ', содержит больше одного' DataField'? Какой 'TypeInfo' из этих' DataFields' внутри вашего 'ResultFlag' вы хотите отображать внутри вашего' ListBox'? – amuz

+0

Вы только что поняли, что в коде что-то еще должно быть неправильно, так как этот «ObservableCollection » всегда будет содержать только один элемент в моем случае. Я вернусь с обновлением и повышением, когда я получу свой код прямо! Спасибо. – zniwalla

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