我有一個類名爲 「員工」:WPF-組合框綁定
public string Forname { get; set; }
public string Lastname { get; set; }
public EmployeeGroup Group { get; set; }
一類 「EmployeeGroup」:
public string Groupname { get; set; }
public short GroupID { get; set; }
和WPF:
<ComboBox x:Name="cmbGroup" SelectedItem="{Binding Group}" HorizontalAlignment="Left" Margin="342,226,0,0" VerticalAlignment="Top" Width="129"/>
<TextBox x:Name="txtForename" Text="{Binding Forname}" HorizontalAlignment="Left" Height="24" Margin="342,21,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="129" VerticalContentAlignment="Center" GotFocus="SelectText"/>
<TextBox x:Name="txtLastname" Text="{Binding Lastname}" HorizontalAlignment="Left" Height="24" Margin="342,47,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="129" VerticalContentAlignment="Center" GotFocus="SelectText"/>
<ListBox x:Name="lstEmployee" HorizontalAlignment="Left" Height="362" Margin="25,19,0,0" VerticalAlignment="Top" Width="217" SelectionChanged="lstEmployee_SelectionChanged"/>
組合框和ListBox從代碼隱藏文件(ObservableCollection)中獲取源代碼:
cmbGroup.ItemsSource = Database_Contract.GetListOfContract();
lstEmployee.ItemsSource = Database_Employee.GetListOfEmployee();
我設置的DataContext當員工在列表框中選擇在WPF的代碼隱藏文件:
DataContext = lstEmployee.SelectedItem;
與列表框的結合和文本框工作正常,但我有一個Combobox問題: 源代碼工作,意味着我可以選擇不同的組。但是對選定的員工沒有約束力。所以,當我選擇員工時,帶有前綴和姓氏的文本框填充正確,但組合框是空格。但是當我點擊Combobox時,我可以從給定的組中選擇。
那麼我做錯了什麼?
編輯: 當我將ComboBox.SelectedIndex綁定到Group.GroupID,然後它的工作。但不能保證GroupID和ComboBox-Index是相同的。
在你的xaml中是一個名爲cmbGroup的'ComboBox',你正在設置名爲cmbContract的'ComboBox'的'ItemsSource'。這有點令人困惑。 可以肯定的是:你的'ComboBox'中的項目對每個員工都是一樣的,當你在'ListBox'中選擇一個員工時,你想選擇'ComboBox'中的匹配條目? –
需要注意的是,您可以不用更改Window的(?)DataContext,而是使用'Text =「{Binding SelectedItem.Lastname,ElementName = lstEmployee}''編寫您的綁定。 – Clemens
您還必須確保SelectedItem屬性綁定的組實例實際上包含在ListBox的ItemsSource集合中。如果它們是不同的對象,則可以覆蓋EmployeeGroup類的Equals方法。 – Clemens