Добавление элемента в комбинированный список Silverlight - PullRequest
1 голос
/ 26 октября 2011

У меня есть Silverlight заявление с ComboBox, которое заполнено VideoCaptureDevice.

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>

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Вы явно устанавливаете ItemsSource в коде и XAML, выбираете один или другой.В идеале вы должны использовать подход XAML и правильно установить DataContext.

Как только вы примете это решение, вы можете вставить элемент в ComboBox, используя свойство Items.

ComboBox box = new ComboBox();
box.Items.Insert(0, "My Item");

Лучшим подходом было бы использовать ICollectionView и просто отсортировать данные и позволить пользовательскому интерфейсу реагировать соответствующим образом.Ваш ItemsSource будет тогда привязан к ICollectionView.

0 голосов
/ 26 октября 2011

Вы можете легко вставить элемент в нужное место индекса в коллекции элементов ComboBox, используя следующий код.

         TextBlock t = new TextBlock();
        t.Text = "Select a video device"
        combo.Items.Insert(0, t);

При установке выбранного индекса ComboBox по умолчанию будет отображать добавленный вами элемент:

   combo.SelectedIndex = 0;

или

вы можете сделать это ..

   YourClassObject objSelectItem = new YourClassObject(); 
    objSelectItem.ID = "0"; 
    objSelectItem.Name = "Select Item"; 
    ComboBox1.Items.Insert(0,objSelectItem); 

Надеюсь, это поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...