2013-07-31 3 views
0

У меня есть следующий код за классом,Как показать значение по умолчанию в combobox, используя привязку?

У меня есть cobobox в xaml. Я хочу связать его с этим классом. Код, приведенный ниже, дает combobox содержать 2 элемента «Произвольные» и «Настраиваемые»

Но когда я запускаю приложение, combobox пуст. Значение по умолчанию не выбрано. Как это сделать?

public class ReadData:INotifyPropertyChanged 
{ 

    private string typeData="Arbitrary"; 
    private string[] typeDataList={"Arbitrary", "Configurable"}; 
    private ICollectionView typeDataList; 

    public string[] TypeDataList 
    { 
     get 
     { 
      return typeDataList; 
     } 
     set 
     { 
      typeDataList=value; 
      NotifyProertyChanged("TypeDataList"); 
     } 
    } 

public string TypeData 
{ 
get 
{ 
return typeData; 
} 
set 
{ 
typeData=value; 
NotifyPropertyChanged("TypeData"); 
} 

public ICollectionView TypeDataListView 
{ 
get 
{ 
typeDataListView=CollectionViewSource.GetDefaultView(typeDataList); 
return typeDataListView; 
} 
set 
{ 
typeDataListView=value; 
//typeDataList= ??? 
} 
} 

XAML файл

<ComboBox ItemSource={Binding TypeDataListView}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding typeData}" Height="23" Width="120"/> 

ответ

1

Я думаю, вы не хотите, только связывание источника элементов, но и выбор выпадающего списка также важен для вас, чтобы вы хотели бы добавить выбор на модели представления также. Существует два способа:

  1. Добавить свойство SelectedTypeData в класс ReadData, тип которого является строкой. Bind SelectedItem из ComboBox в SelectedTypeData. Затем при инициализации вашего объекта ReadData вы можете присвоить SelectedTypeData значение по умолчанию в качестве выбора по умолчанию в ComboBox.

  2. Добавить свойство TypeDataListView в класс ReadData, тип которого является ICollectionView. Это может потребовать, чтобы ваш TypeDataList был List. Он может быть сгенерирован вызовом CollectionViewSource.GetDefaultView (...). Свойство CurrentItem можно присвоить по умолчанию и присвоить свойству IsSynchronizedWithCurrentItem Combobox значение true, чтобы вы могли синхронизировать выбранный вами элемент combobox с CurrentItem вашего TypeDataListView.

Если вы не хотите, чтобы добавить выбор на модели представления, вы можете добавить событие Loaded в код и назначить выбранный элемент управления ComboBox вручную в обработчике.

+0

Вы имеете в виду, что мне нужно преобразовать мою строку [] в ICollectionView? Без ICollectionView это невозможно сделать? Я использую .NET 4. У меня нет класса CollectionViewSource. – SHRI

+1

.Net 4 имеет встроенный CollectionViewSource. Вы можете сохранить свою строку [], но вам нужно добавить свойство для привязки выделенного объекта ListBox. См. Мой первый пункт. –

+0

Простите, да. .NET 4 имеет класс CollectionViewSource. Я обновил ваш пост. Но все же выбранный элемент по умолчанию не отображается. Я что-то упустил? – SHRI

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