This may sound trivial but i have a problem with setting selected item in ComboBox 😉
What i want to achive:
I want to have the first element of the list selected after the page loads.
XAML Code:
<DataTemplate>
<ComboBox x:Name="DeviceComboBox" SelectedIndex="1" SelectionChanged="DeviceComboBox_SelectionChanged">
<ComboBox.Items>
<ComboBoxItem x:Name="Switch" Content="Switche"/>
<ComboBoxItem x:Name="Firewall" Content="Firewalle"/>
<ComboBoxItem x:Name="Host" Content="Hosty" />
<ComboBoxItem x:Name="SRF1" Content="SRF1"/>
</ComboBox.Items>
</ComboBox>
</DataTemplate>
RESULT:
AG_E_UKNOWN_ERROR [Line:49 Position:55]
Line 49:
</ComboBox>
Error Details
w MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
w MS.Internal.XcpImports.MethodEx(DependencyObject obj, String name)
w MS.Internal.XcpImports.DataTemplate_LoadContent(DataTemplate template)
w System.Windows.Controls.DataGridTemplateColumn.GenerateElement(DataGridCell cell, Object dataItem)
w System.Windows.Controls.DataGrid.PopulateCellContent(Boolean isCellEdited, DataGridColumn dataGridColumn, DataGridRow dataGridRow, DataGridCell dataGridCell)
w System.Windows.Controls.DataGrid.AddNewCellPrivate(DataGridRow row, DataGridColumn column)
w System.Windows.Controls.DataGrid.CompleteCellsCollection(DataGridRow dataGridRow)
w System.Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex, Int32 slot, Object dataContext)
w System.Windows.Controls.DataGrid.InsertElementAt(Int32 slot, Int32 rowIndex, Object item, DataGridRowGroupInfo groupInfo, Boolean isCollapsed)
w System.Windows.Controls.DataGrid.InsertRowAt(Int32 rowIndex)
w System.Windows.Controls.DataGridDataConnection.NotifyingDataSource_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
w System.Windows.Data.PagedCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
w System.Windows.Data.PagedCollectionView.ProcessAddEvent(Object addedItem, Int32 addIndex)
w System.Windows.Data.PagedCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
w System.Windows.Data.PagedCollectionView.<.ctor>b__0(Object sender, NotifyCollectionChangedEventArgs args)
w System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
w System.Collections.ObjectModel.Collection`1.Add(T item)
w LANOS.Views.Customers.onCustomerListLoaded(LoadOperation`1 loadOper)
w System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClass13`1.<Load>b__11(LoadOperation lo)
w System.ServiceModel.DomainServices.Client.LoadOperation.<>c__DisplayClass4`1.<Create>b__0(LoadOperation`1 arg)
w System.ServiceModel.DomainServices.Client.LoadOperation`1.InvokeCompleteAction()
w System.ServiceModel.DomainServices.Client.OperationBase.Complete(Object result)
w System.ServiceModel.DomainServices.Client.LoadOperation.Complete(DomainClientResult result)
w System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)
w System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClass1b.<Load>b__17(Object )
Caused by: AG_E_UNKNOWN_ERROR [Line: 49 Position: 55]
w MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
w MS.Internal.XcpImports.MethodEx(DependencyObject obj, String name)
w MS.Internal.XcpImports.DataTemplate_LoadContent(DataTemplate template)
w System.Windows.Controls.DataGridTemplateColumn.GenerateElement(DataGridCell cell, Object dataItem)
w System.Windows.Controls.DataGrid.PopulateCellContent(Boolean isCellEdited, DataGridColumn dataGridColumn, DataGridRow dataGridRow, DataGridCell dataGridCell)
w System.Windows.Controls.DataGrid.AddNewCellPrivate(DataGridRow row, DataGridColumn column)
w System.Windows.Controls.DataGrid.CompleteCellsCollection(DataGridRow dataGridRow)
w System.Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex, Int32 slot, Object dataContext)
w System.Windows.Controls.DataGrid.InsertElementAt(Int32 slot, Int32 rowIndex, Object item, DataGridRowGroupInfo groupInfo, Boolean isCollapsed)
w System.Windows.Controls.DataGrid.InsertRowAt(Int32 rowIndex)
w System.Windows.Controls.DataGridDataConnection.NotifyingDataSource_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
w System.Windows.Data.PagedCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
w System.Windows.Data.PagedCollectionView.ProcessAddEvent(Object addedItem, Int32 addIndex)
w System.Windows.Data.PagedCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
w System.Windows.Data.PagedCollectionView.<.ctor>b__0(Object sender, NotifyCollectionChangedEventArgs args)
w System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
w System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
w System.Collections.ObjectModel.Collection`1.Add(T item)
w LANOS.Views.Customers.onCustomerListLoaded(LoadOperation`1 loadOper)
w System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClass13`1.<Load>b__11(LoadOperation lo)
w System.ServiceModel.DomainServices.Client.LoadOperation.<>c__DisplayClass4`1.<Create>b__0(LoadOperation`1 arg)
w System.ServiceModel.DomainServices.Client.LoadOperation`1.InvokeCompleteAction()
w System.ServiceModel.DomainServices.Client.OperationBase.Complete(Object result)
w System.ServiceModel.DomainServices.Client.LoadOperation.Complete(DomainClientResult result)
w System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)
w System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClass1b.<Load>b__17(Object )
Any ideas?
As I read in your comments you want to use a ComboBox which automatically has a selection when it is loaded. Therefore I would suggest two possibilities: Writing a control deriving from ComboBox or adding a behavior to a default ComboBox.
Deriving from ComboBox:
Usage:
Implementing behavior:
A behavior class allows you to add a behavior to a control using xaml. The behavior is coded.
Usage:
Note, that for the usage of behaviors you need the Blend SDK to be installed.