2010-03-20 88 views
0

我有兩個類WPF:數據綁定和組合框

Company 
    CompanyKey 
    CompanyName 

Person 
    FirstName 
    LastName 
    CompanyKey 

組合框列表項綁定到CompanyObjects的集合。

如何將Combobox的選定項屬性綁定到Person.CompanyKey屬性?

+0

你確定你的問題是正確的措辭?如果組合框包含公司對象,您如何期望所選項目依賴於人員類別?每家公司只有一個人嗎? – Timores 2010-03-20 09:00:03

+0

組合框用於指示該人在哪個公司。 – 2010-03-20 15:11:34

回答

1
http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

然後,您可以用類似綁定在你的XAML

如果我已經正確理解你的問題,這裏是一個演示應用程序,解釋組合框的數據綁定:Demo App

希望這會有所幫助。
問候,
米希爾Gokani

編輯:從代碼示例片段

<Window 
    x:Class="WpfApplication.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="300" 
    Width="300"> 
    <StackPanel> 

     <TextBlock 
      Margin="10">Persons</TextBlock> 
     <ComboBox 
      x:Name="comboPersons" 
      Height="25" 
      Margin="10" 
      ItemsSource="{Binding Persons}"> 
      <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel 
         Orientation="Horizontal"> 
         <TextBlock 
          Text="{Binding FirstName}" 
          Margin="0,0,5,0" /> 
         <TextBlock 
          Text="{Binding LastName}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
     </ComboBox> 

     <TextBlock 
      Margin="10">Companies</TextBlock> 
     <ComboBox 
      x:Name="comboCompanies" 
      Height="25" 
      Margin="10" 
      ItemsSource="{Binding Companies}" 
      DisplayMemberPath="CompanyName" 
      SelectedValuePath="CompanyKey" 
      SelectedValue="{Binding SelectedItem.CompanyKey, ElementName=comboPersons}" /> 

    </StackPanel> 
</Window> 
+0

看起來太簡單了。我期待它成爲屁股的一大痛苦,而不僅僅是一些屬性。 – 2010-03-20 15:17:57

0

解決方案很簡單,您需要使用IValueConverter將公司轉換爲Person對象。

有關的IValueConverter的更多信息,請訪問: {綁定路徑= combox.SelectedItem,轉換器= {StaticResource的CompanyToPersonConvertor}}