[英]WPF get selected Combobox value which is bound to observablecollection
我有一個綁定到ObservableCollection
的ComboBox
(CBaddress)。
XAML
<ComboBox
x:Name="CBaddress"
Height="23"
Margin="80,75,423,0"
VerticalAlignment="Top"
ItemTemplate="{StaticResource AddressTemplate}"
ItemsSource="{Binding}"
/>
<DataTemplate x:Key="AddressTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Width="50" Text="{Binding Path=ID_}" />
<TextBlock Width="100" Text="{Binding Path=Address_}" />
<TextBlock Width="30" Text="{Binding Path=HouseNumber_}" />
<TextBlock Width="40" Text="{Binding Path=PostalCode_}" />
<TextBlock Width="150" Text="{Binding Path=State_}" />
</StackPanel>
</DataTemplate>
ObservableCollection
由一個class
(地址)組成。
class Address
{
public int ID_ { get; set; }
public string Country_ { get; set; }
public string State_ { get; set; }
public int PostalCode_ { get; set; }
public string Address_ { get; set; }
public int HouseNumber_ { get; set; }
}
當我的程序啟動時,它會從數據庫中加載所有值,並且可以在ComboBox
完美顯示所有值:
CBaddress.DataContext = database.SelectAllAddresses();
但是我如何獲得這些值? 使用CBaddress.Text
我只得到這個輸出:
MySQL_WPF.classes.Address
是否可以獲取也顯示在ComboBox
的純文本?
如果我能從選定的值中獲得某個值,比如ID_
,那將是最好的。
如果要獲取所選項目,請使用ComboBox
上的SelectedItem
屬性訪問它。
var selectedID = ((Address)CBaddress.SelectedItem).ID_ ;
SelectedItem
屬性屬於object
類型,因此您需要將其強制轉換為您的數據類型Address
。 然后您可以像往常一樣訪問它的任何屬性。
如果您在 MVVM 場景中工作,您會將SelectedItem
綁定到視圖模型上的屬性,例如SelectedAddress
。
<ComboBox ...
ItemsSource="{Binding}"
SelectedItem={Binding SelectedAddress}"/>
private Address _selectedAddress;
public Address SelectedAddress
{
get => _selectedAddress;
set
{
if (_selectedAddress == value)
return;
_selectedAddress = value;
OnPropertyChanged();
}
}
然后您可以以相同的方式訪問任何屬性,例如:
var selectedID = SelectedAddress.ID_;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.