设置WPF组合框的SelectedItem
有很多方法可以做到这一点,但对于您的示例,我将更改ComboBox标记,如下所示:设置WPF组合框的SelectedItem,wpf,combobox,Wpf,Combobox,有很多方法可以做到这一点,但对于您的示例,我将更改ComboBox标记,如下所示: cmbBudgetYear.SelectedItem = cmbBudgetYear.Items( get the item with the Now.Year.ToString) 请注意,值必须是字符串。例如,使用 cmbBudgetYear.SelectedValue = "2009"; 另一个想法 如果您使用代码隐藏,是否
cmbBudgetYear.SelectedItem = cmbBudgetYear.Items(
get the item with the Now.Year.ToString)
请注意,值必须是字符串。例如,使用
cmbBudgetYear.SelectedValue = "2009";
另一个想法
如果您使用代码隐藏,是否可以用整数填充组合框。比如:
cmbBudgetYear.SelectedValue = DateTime.Now.Year.ToString();
…然后您可以选择非常简单的值,如
for(int y=DateTime.Now.Year;y>DateTime.Now.Year-10;y--){
cmbBudgetYear.Items.Add(y);
}
。。。此外,您还有其他优势。在这种情况下,您应该能够简单地使用
.Text()
进行设置:
cmbBudgetYear.SelectedValue = 2009;
但是,为了在更改后获取值,可能是因为我没有到处设置SelectedValuePath=“Content”
,也可能是因为我没有使用SelectedValue
来设置它(以及我为什么要提到它),所以确定实际值变得稍微复杂一些,由于在XAML中添加SelectionChanged
的事件处理程序后必须执行此操作:
cmbBudgetYear.Text = "2010";
因为.SelectedValue.ToString()
将提供类似于System.Windows.Controls.Control:2010
的内容,所以需要使用解析器,因此必须对其进行解析才能获得值:
private void cmbBudgetYear_SelectionChanged(object sender, EventArgs e)
{
ComboBox cbx = (ComboBox)sender;
string yourValue = String.Empty;
if (cbx.SelectedValue == null)
yourValue = cbx.SelectionBoxItem.ToString();
else
yourValue = cboParser(cbx.SelectedValue.ToString());
}
至少,这是我遇到的。。。。我知道这个问题是关于设置框的,但不能只讨论设置而不讨论如何获取它,因为您如何设置它将决定您如何获取它(如果它被更改)。这对我来说很好
private static string cboParser(string controlString)
{
if (controlString.Contains(':'))
{
controlString = controlString.Split(':')[1].TrimStart(' ');
}
return controlString;
}
observedcollection组织{get;set;}
Organizations=GetOrganizations();
等待调度程序。开始启动((操作)(()=>
{
var allOrganizationItem=new OrganizationView(){ID=0,IsEnabled=true,Name=“(All)”};//它是一个类
组织。添加(allOrganizationItem);
cbOrganizations.DisplayMemberPath=“Name”;
cbOrganizations.SelectedValuePath=“ID”;
cbOrganizations.ItemsSource=null;
cbOrganizations.ItemsSource=Organizations;//设置包含所有项的数据源
cbOrganizations.SelectedItem=allOrganizationItem;//它将使其成为所选项目
}));
在我的例子中,我手动添加了以下值:
ObservableCollection<OrganizationView> Organizations { get; set; }
Organizations = GetOrganizations();
await Dispatcher.BeginInvoke((Action)(() =>
{
var allOrganizationItem = new OrganizationView() { ID = 0, IsEnabled = true, Name = "(All)" }; // It is a class
Organizations.Add(allOrganizationItem);
cbOrganizations.DisplayMemberPath = "Name";
cbOrganizations.SelectedValuePath = "ID";
cbOrganizations.ItemsSource = null;
cbOrganizations.ItemsSource = Organizations; // Set data source which has all items
cbOrganizations.SelectedItem = allOrganizationItem; // It will make it as a selected item
}));
然后我选择了想要的一个:
myComboBox.Items.Add("MyItem");
而不是:
myComboBox.SelectedItem = "WantedItem";
哈哈……选择了valuepath=“Content”就是了。谢谢回答得很好,也帮了我。
myComboBox.Items.Add("MyItem");
myComboBox.SelectedItem = "WantedItem";
myComboBox.SelectedValue = "WantedItem";