2016-01-16 100 views
1

我有一個基本的MVVM WPF應用程序,它顯示DataGrid中的一堆用戶相關信息。作爲一個例子,我有兩個類(我簡化了類,並沒有在我的實際應用中實現INotifyPropertyChanged等)WPF Datagrid查找Combobox

public class Address 
{ 
    public String StreetName { get; set; } 
} 

public class Person 
{ 
    public String Name { get; set; } 
    public String Street { get; set; } 
} 

ViewModel包含兩個ObservableCollections

ObservableCollection<Person>
ObservableCollection<Address>

我綁定ViewModelWindow,它顯示了人收集就好了。但現在我想,地址爲ComboBox,用戶只能從上面的地址集合中選擇值。像查找表一樣。

這是我的XAML代碼。我管理,這是顯示地址集合,但它不會顯示我從個人收集的實際記錄作爲初始記錄。

  <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn> 
      <DataGridTextColumn Header="Street" Binding="{Binding Street}"></DataGridTextColumn> 

      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding DataContext.addresses, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}}" DisplayMemberPath="StreetName"> 
         </ComboBox> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

ComboBox

回答

0

(取決於你實際上綁定)設置SelectedItemSelectedValue財產,地址。所以,如果你是存儲街道名稱,那麼你就會有這樣的:

<DataTemplate> 
    <ComboBox ItemsSource="..." 
       DisplayMemberPath="StreetName" 
       SelectedValuePath="StreetName" 
       SelectedValue="{Binding Street}"/> 
</DataTemplate> 
+0

我不真的得到它,如果我現在必須使用'SelectedItem'或'SelectedValue'。我不能不工作。 –

+0

@HansVader你想綁定什麼?整個地址對象或只是街道名稱(例如)? – ChrisF

+0

我只想綁定到'Person'對象的字段'Street'。 –