![](/img/trans.png)
[英]WPF Combobox when SelectedValue is 0 then the Combobox should not select
[英]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}
。 那還行嗎? 我假設您的tblEyeColorViewSource
是CollectionViewSource
,所以該代碼不應為:
DataContext="{Binding Source={StaticResource tblEyeColorViewSource}}"
無論哪種方式,如果將ComboBox.ItemsSource
設置為{Binding}
,則意味着您可能沒有選定的項目綁定到ComboBox.SelectedValue
屬性-這對於您想要的內容至關重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.