2014-04-15 117 views
0

我找的如何使用一個WPF的DataGrid的組合框裏面的SelectedItem屬性的例子,我有WPF DataGrid中的ComboBox selectedItem屬性二傳手

<DataGridComboBoxColumn SelectedValueBinding="{Binding CID, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
         SelectedValuePath="CID" 
         Header="CID" 
         Width="70"> 
     <DataGridComboBoxColumn.EditingElementStyle> 
      <Style TargetType="ComboBox"> 
       <Setter Property="ItemsSource" Value="{Binding DataContext.ListCustomerCollection, 
        RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/> 
       <Setter Property="DisplayMemberPath" Value="Name"/> 
       <Setter Property="SelectedItem" Value="{Binding DataContext.Customer, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"></Setter> 
      </Style> 
     </DataGridComboBoxColumn.EditingElementStyle> 
     <DataGridComboBoxColumn.ElementStyle> 
      <Style TargetType="ComboBox"> 
       <Setter Property="ItemsSource" Value="{Binding DataContext.ListCustomerCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/> 
       <Setter Property="DisplayMemberPath" Value="Name"/> 
       <Setter Property="HorizontalAlignment" Value="Center"></Setter> 
       <Setter Property="SelectedItem" Value="{Binding DataContext.Customer, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"></Setter> 
      </Style> 
     </DataGridComboBoxColumn.ElementStyle> 

DataContext的我綁定(ListCustomerCollection)是一個列表反對

List<Customer> 

所以我已經設置了視圖模型屬性的屬性是

private Customer m_Customer = null; 
public Customer Customer 
{ 
    get { return m_Customer; } 
    set 
    { 
     m_Customer = value; 
     OnPropertyChanged("Customer"); 
    } 
} 

那麼如何寫入XAML來設置SelectedItem的上述屬性?

+0

你有'SelectedValue','SelectedItem'或'SelectedIndex'屬性集嗎? 'DisplayMemberPath'只設置用於顯示組合框中的項目的值,並不用於所選項目 – Rachel

+0

嗨Rachel,我將發佈上面的所有XAML,謝謝 – user3428422

+0

然而,它應該是SelectedItem,因爲它是這是導致問題,我不介意選擇組合的SelectedValue時,我只需要返回值 – user3428422

回答

1

如果屬性駐留在窗口的ViewModel中,則必須像處理ItemsSource一樣獲取窗口的DataContext。

<Setter Property="SelectedItem" 
     Value="{Binding DataContext.Customer, 
         RelativeSource={RelativeSource Mode=FindAncestor, 
               AncestorType=Window}}"/> 
+0

嗨Rohit,屬性現在得到設置,謝謝,但值不顯示在組合框中,(一個錯誤出現)當我在其中收集其他代碼時可能會導致問題 – user3428422

+0

如果您已經擁有了'SelectedValueBinding',爲什麼還需要'SelectedItem'? –

+0

其實,你已經解決了,我已經把上面的代碼放在EditingElementStyle標籤和賓果遊戲中!我明白你的意思,但我無法訪問ViewModel中的SelectedValueBinding,我該怎麼做? – user3428422