2010-08-02 46 views
17
<ComboBox Grid.Row="1" Grid.Column="0" Width="Auto" Name="cmbBudgetYear"> 
    <ComboBoxItem Content="2009" /> 
    <ComboBoxItem Content="2010" /> 
    <ComboBoxItem Content="2011" /> 
    <ComboBoxItem Content="2012" /> 
</ComboBox> 

如何在后面的代码中将所选项目设置为当前年份?设置WPF组合框的选定项目

喜欢的东西...

cmbBudgetYear.SelectedItem = cmbBudgetYear.Items(
             get the item with the Now.Year.ToString) 

回答

33

存在很多方法可以做到这一点,但对于你的榜样,如下我会改变组合框,标签:

<ComboBox Grid.Row="1" Grid.Column="0" 
      Name="cmbBudgetYear" SelectedValuePath="Content"> 

我增加了属性 - 定义SelectedValuePath="Content"。之后,你可以用相应的字符串,例如:

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); 
} 

..then您可以选择的极端简单的像

cmbBudgetYear.SelectedValue = 2009; 

值...你将不得不还有其他优点。

+4

哈哈...... SelectedValuePath =“内容”是它。谢谢! – knockando 2010-08-02 19:57:39

+0

优秀的答案,也帮助了我。 – Califf 2012-09-03 04:24:31

0

在这种情况下,你应该能够简单地使用.Text()进行设置:

cmbBudgetYear.Text = "2010"; 

对于获得价值变动后,不过,也许是因为我没有设置SelectedValuePath="Content"无处不在,或也许是因为我没有使用SelectedValue来设置它(以及为什么我提到它),确定实际值会变得稍微复杂一些,因为您必须在XAML中添加SelectionChanged的事件处理函数后执行此操作:

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()); 
} 

凡需要一个解析器,因为.SelectedValue.ToString()会给你像System.Windows.Controls.Control: 2010,所以你必须分析它来获取值:

private static string cboParser(string controlString) 
{ 
    if (controlString.Contains(':')) 
    { 
     controlString = controlString.Split(':')[1].TrimStart(' '); 
    } 
    return controlString; 
} 

至少,这是我碰到了....我知道这问题是关于如何设置方框,但是后来也没有谈论如何获取它,因此无法解决设置问题,因为如何设置它将决定如何更改设置。

0

它适用于我。

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 
    })); 
相关问题