2012-10-05 80 views
-2

选择列表中的第一个项目我有使用使用的SelectedIndex

<ComboBox x:Name="combo" 
      SelectedIndex="0" 
      ItemsSource="{Binding comboBoxSelections, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
      DisplayMemberPath="Key" 
      IsEditable="True" > 

默认为从的ItemsSource列表中的第一项。然而组合框,下面不正确绑定到一个DataTable。
当我将绑定添加到SelectedValue时,它现在可以正确绑定,但不再默认为第一项;
SelectedIndex="0"现在没有工作

<ComboBox x:Name="combo" 
      SelectedValue="{Binding Selection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
      SelectedIndex="0" 
      ItemsSource="{Binding comboBoxSelections, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
      DisplayMemberPath="Key" 
      IsEditable="True" > 

是否有可能在初始化仅XAML的价值?

我不认为我可以从构造为combo设置它不是一个单一的组合框,但一个DataGridComboBoxColumn

<DataGrid.Columns> 
    <DataGridComboBoxColumn Header="Department Id" x:Name="comboboxColumn1" 
      SelectedValueBinding="{Binding Department Id}" /> 
     <DataGridTemplateColumn x:Name="DataGridTempCol" Header="Selection"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <ComboBox 
         x:Name="combo" 
         SelectedValue="{Binding Selection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
         ItemsSource="{Binding comboBoxSelections, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
         DisplayMemberPath="Key" 
         IsEditable="True" > 
        </ComboBox> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
+0

墙代码花花公子。 – Paparazzi

+0

所以XAML可以设置它,但你不能在代码中设置它?真? – Paparazzi

+0

@Blam - 我必须承认C#对我来说是非常新的,所以我仍然感觉我的方式,可能会问明显的(愚蠢的)事情。这不是故意的。我的代码在DataGrid中定义了一个DataColumn,并且XAML绑定了一个Combobox,所以在该列的每一行都有ComboBox。我看不到如何在代码中设置'combo' SelectedItem =“0”? – user3357963

回答

2

的设置的SelectedValue在构造函数中的第一行的一部分。