#c# #silverlight-4.0 #combobox
#c# #silverlight-4.0 #выпадающий список
Вопрос:
У меня есть Silverlight
приложение с a ComboBox
, которое заполнено VideoCaptureDevice
символом ‘s.
cbVideoDevices.ItemsSource = CaptureDeviceConfiguration.GetAvailableVideoCaptureDevices();
Я пытаюсь добавить элемент «Выбрать видеоустройство» в первый индекс, но я не могу заставить его работать.
Код XAML:
<ComboBox Height="25" HorizontalAlignment="Left" Margin="0,0,0,0" Name="cbVideoDevices" VerticalAlignment="Top" Width="125" ItemsSource="{Binding AudioDevices}" SelectedItem="{Binding SelectedAudioDevice}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FriendlyName}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Ответ №1:
Ваша явная настройка ItemsSource
в коде и XAML, выберите один или другой. В идеале вы должны использовать подход XAML и установить DataContext
соответствующий параметр.
Как только вы примете это решение, вы можете вставить элемент в свой ComboBox
, используя Items
свойство.
ComboBox box = new ComboBox();
box.Items.Insert(0, "My Item");
Лучшим подходом было бы использовать ICollectionView и просто сортировать данные, позволяя пользовательскому интерфейсу реагировать соответствующим образом. ItemsSource
Затем ваш будет привязан к ICollectionView
.
Ответ №2:
Вы можете легко вставить элемент в нужное расположение индекса в коллекции элементов выпадающего списка, используя следующий код.
TextBlock t = new TextBlock();
t.Text = "Select a video device"
combo.Items.Insert(0, t);
Установка выбранного индекса настроит выпадающий список на отображение добавленного элемента по умолчанию:
combo.SelectedIndex = 0;
или
вы можете сделать так..
YourClassObject objSelectItem = new YourClassObject();
objSelectItem.ID = "0";
objSelectItem.Name = "Select Item";
ComboBox1.Items.Insert(0,objSelectItem);
я надеюсь, что это поможет вам…