[英]Selected item on WPF combobox
我有一些WPF組合框(XAML):
<ComboBox ItemsSource="{Binding Path=NonPositionedConcentrators}"
SelectedValue="{Binding Path=SelectedNonPositionedConcentrator}"
DisplayMemberPath="SerialNumber" />
SelectedNonPositionedConcentrator
是集中器類型。 就像是:
class Concentrator
{
...
public string SerialNumber {...}
...
public override ToString{ return "Some needed text..."; }
}
NonPositionedConcentrators
集中器對象列表。
因此,在應用程序中,我看到帶有NonPositionedConcentrators序列號的組合框(由於DisplayMemberPath="SerialNumber"
),但是當我選擇某項時,然后選擇項shonw作為"Some needed text..."
,請參見圖像:
我已經嘗試了SelectedValuePath =“ SerialNumber”,但是它不起作用...而且我無法刪除此- public override ToString{ return "Some needed text..."; }
public override ToString{ return "Some needed text..."; }
,becase的我要...
看來您有一個自定義的ComboBox模板,這可能會導致您的問題。 如果它使用TextBlock或ContentPresenter來顯示所選項目,而該項目只是綁定SelectedItem屬性而沒有拉入任何模板或其他設置,則無論如何都將只獲得ToString值。 正確構造的模板將具有類似於默認模板在此處使用的內容:
<ContentPresenter ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
嘗試這個:
<ComboBox ItemsSource="{Binding Path=NonPositionedConcentrators}"
SelectedItem="{Binding Path=SelectedNonPositionedConcentrator}"
DisplayMemberPath="SerialNumber" />
編輯:我轉載了您的示例。 我的選礦課:
public class Concentrator
{
public string SerialNumber
{
get
{
return "123";
}
}
public override string ToString()
{
return "Some needed text...";
}
}
我的ViewModel:
public class TestViewModel : ViewModelBase
{
public ObservableCollection<Concentrator> NonPositionedConcentrators { get; set; }
public Concentrator SelectedNonPositionedConcentrator { get; set; }
public TestViewModel()
{
NonPositionedConcentrators = new ObservableCollection<Concentrator>();
NonPositionedConcentrators.Add(new Concentrator());
NonPositionedConcentrators.Add(new Concentrator());
NonPositionedConcentrators.Add(new Concentrator());
}
}
組合框:
<ComboBox Height="23" Margin="25,12,103,0" Name="comboBox1" VerticalAlignment="Top"
ItemsSource="{Binding Path=NonPositionedConcentrators}"
SelectedItem="{Binding Path=SelectedNonPositionedConcentrator}"
SelectedValuePath="SerialNumber"
DisplayMemberPath="SerialNumber" />
它對我來說很好!
您可以包括一個項目模板:
<ComboBox.ItemTemplate>
<DataTemplate>
//your stuff
</DataTemplate>
</ComboBox.ItemTemplate>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.