<ComboBox
x:Name="comboBox"
Margin="281.4,160,259.995,159.958"
d:LayoutOverrides="Height"
ItemsSource="{Binding _US_STATES}"
SelectedIndex="0"
SelectedValue="{Binding SelectedState}"
SelectedValuePath="{Binding Path=_US_STATES/SHORT}"
>
<ComboBox.ItemTemplate>
<DataTemplate>
<Border Padding="2">
<TextBlock Text="{Binding LONG}" />
</Border>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
以上是我顯示的組合框的xaml版本。我可以正確顯示它,因爲它顯示正確的數據。當我嘗試獲取它被選中的值時,總是RxTracking.model.US_STATES不是它應該的值。wpf組合框SelectedValue獲取類名稱而不是屬性
的US_STATES看起來是這樣的:
public class US_STATES : ObservableObject
{
private string _long;
private string _short;
public string LONG
{
get { return _long; }
set { Set("LONG", ref _long, value); }
}
public string SHORT
{
get { return _short; }
set { Set("SHORT", ref _short, value); }
}
public static ObservableCollection<US_STATES> GetAllStates()
{
ObservableCollection<US_STATES> ALL = new ObservableCollection<US_STATES>
{
new US_STATES {LONG="ALABAMA",SHORT="AL" },
new US_STATES {LONG="Alaska", SHORT = "AK"},
new US_STATES {LONG = "Arizona", SHORT = "AZ"},
etc ...
我收到這是在錯誤窗口:
System.Windows.Data Error: 40 : BindingExpression path error: 'AL' property not found on 'object' ''US_STATES' (HashCode=8402670)'. BindingExpression:Path=AL; DataItem='US_STATES' (HashCode=8402670); target element is 'ComboBox' (Name='comboBox'); target property is 'NoTarget' (type 'Object')
System.Windows.Data Error: 40 : BindingExpression path error: 'AL' property not found on 'object' ''US_STATES' (HashCode=15232780)'. BindingExpression:Path=AL; DataItem='US_STATES' (HashCode=15232780); target element is 'ComboBox' (Name='comboBox'); target property is 'NoTarget' (type 'Object')
[WPF IsEditable = true]的可能重複填充對象的組合框將ToString()顯示爲選定的項目](https://stackoverflow.com/questions/1844156/wpf-iseditable-true-combobox-filled-with-對象 - 顯示最的toString-AS-的) –