2013-08-20 64 views
0

我有一個組合框,它包含類別對象。如何將combobox類別項綁定到它的類別ID

<ComboBox Name="cbxCategory" Grid.Row="0" Grid.Column="1" FontSize="14" SelectedValue="{Binding Category, Mode=TwoWay}" Style="{StaticResource RegularControlStyles}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <ComboBoxItem Content="{Binding CategoryName}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

,我有DataContext的是:除了這兩個組合框(類別和子類別)

public class EventFilter 
{ 
    public int CategoryId { get; set; } 
    public int SubCategoryId { get; set; } 
    public DateTime StartDate { get; set; } 
    public int? Duration { get; set; } 
    public string Address { get; set; } 
} 

所有字段綁定好。

問題是組合框包含一個Category對象,而EventFilter包含它的id。一個解決方案,我可以做的只是更改屬性:

public int CategoryId { get; set; } 

到:

public int Category { get; set; } 

但我不想這樣做,我想擁有的ID。 那麼我該怎麼做呢?

我應該使用轉換器嗎? 如果我在綁定組合框更改爲:

SelectedValue="{Binding CategoryId, Mode=TwoWay}" 

它不工作,以及因爲它擁有分類。

有人可以幫助我嗎?

非常感謝。

回答

0

您需要將ComboBoxSelectedValuePath屬性設置爲你的財產的名字......在這種情況下,我猜,你有你的Category類名爲「ID」的屬性。然後,SelectedValue屬性將提供來自所選Category對象的「Id」屬性的值。

您可以在MSDN的Selector.SelectedValuePath Property頁面找到更多信息。

您可能需要或需要設置DisplayMemberPath屬性...這將定義所選Category對象的哪些屬性將顯示在控件中。

您可以從MSDN的ItemsControl.DisplayMemberPath Property頁面瞭解更多信息。

<ComboBox Name="cbxCategory" Grid.Row="0" Grid.Column="1" FontSize="14" 
    SelectedValuePath="CategoryId" SelectedValue="{Binding EventFilterItems.CategoryId}" 
    DisplayMemberPath="CategoryName" Style="{StaticResource RegularControlStyles}" /> 

請注意,您需要將ComboBoxSelectedValue屬性綁定到當前EventFilter對象的CategoryId財產。

相關問題