簡體   English   中英

WPF SelectedValue在組合框中的數據綁定到表時

[英]WPF SelectedValue in a combobox when it is databound to a table

我是wpf和數據綁定的新手,對此我一無所知。

所以基本上我有一個EyeColors和EyeColorIds表。 眼睛顏色ID是人員表的外鍵。

我創建了一個綁定到EyeColor表的組合框,並在其中填充了可能的眼睛顏色。 但是,當用戶編輯一個人時,我希望已經選擇了該人的眼睛顏色。 我怎樣才能做到這一點?

 <ComboBox
     DataContext="{StaticResource tblEyeColorViewSource}"
     Height="23"
    HorizontalAlignment="Left" 
        Margin="95,125,0,0" 
        Name="EColorBox" 
        VerticalAlignment="Top" 
        Width="120" 
        DisplayMemberPath="EyeColor"
        ItemsSource="{Binding}" />

那是我的組合框xaml。 當構造窗口時,獲得特定人的眼睛顏色。

因此,在創建編輯窗口之前,我先從數據網格中獲取數據並創建一個人員對象

然后我構造編輯窗口

  public AddEditForm(PeopleManagerController pmc, Person p)
    {
        controller = pmc;
        InitializeComponent();
        personToAE = p;

        FnameText.DataContext = personToAE;
        LnameText.DataContext = personToAE;
        datePicker1.DataContext = personToAE;
        datePicker1.Text = personToAE.DateOfBirth;
        AddEditButton.Content = "Edit";
    }

然后,當用戶單擊“編輯”按鈕時,它將把要編輯的人發送到用於SQL事務的控制器類。

至於xaml,我只是創建控件並將它們綁定到person對象的屬性。 我希望將人的眼睛顏色屬性編輯為組合框的選定值。

當您沒有提供所有相關信息時,這有點困難,所以我將不得不假設一些事情。

<ComboBox DataContext="{StaticResource tblEyeColorViewSource}" Height="23"
HorizontalAlignment="Left" Margin="95,125,0,0" Name="EColorBox" VerticalAlignment="Top" 
Width="120" DisplayMemberPath="EyeColor" ItemsSource="{Binding}" SelectedValuePath="Id" 
SelectedValue={Binding CurrentPerson.EyeColourId}" />

請注意,必須將SelectedValuePath屬性設置為tblEyeColorViewSource數據對象中EyeColourId屬性的確切名稱,無論可以調用什么名稱。 這意味着當選擇一個值時,我們希望從該屬性中接收該值……就像DisplayMemberPath屬性一樣,但是該屬性指定當選擇一個值時將顯示哪個屬性。

現在,必須將SelectedValue屬性設置為引用當前Person對象的對象以及我們要設置的屬性。

我剛剛注意到,您已經將ComboBox.DataContext設置為{StaticResource tblEyeColorViewSource}並將其ComboBox.ItemsSource{Binding} 那還行嗎? 我假設您的tblEyeColorViewSourceCollectionViewSource ,所以該代碼不應為:

DataContext="{Binding Source={StaticResource tblEyeColorViewSource}}" 

無論哪種方式,如果將ComboBox.ItemsSource設置為{Binding} ,則意味着您可能沒有選定的項目綁定到ComboBox.SelectedValue屬性-這對於您想要的內容至關重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM