2012-07-30 115 views
0

我有一个数据绑定组合框列出财务年度。用户从该组合中选择一个值,并从“客户”组合框中选择一个值,然后选择该财务年度的客户报告以供用户处理。尽管可以处理历史文档,但默认使用情况是处理刚刚完成的财政年度的报表,因此我想将组合框设置为默认值(当前)2011/2012,该值是FinancialYear的字符串属性实体。在wpf组合框中的默认值

我的XAML:

<ComboBox Canvas.Left="353" 
      Canvas.Top="18" 
      Height="23" 
      Name="cboFinancialYear" 
      Width="120" 
      DisplayMemberPath="FinancialYear1" 
      ItemsSource="{Binding}" 
SelectedValuePath="FinancialYearID" />; 

Window_Loaded方法背后我的代码:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    String thisYear = MainViewModel.GetCurrentFinancialYear(); 
    lGFinanceEntities = new LGFinanceEntities(); 
    // Load data into FinancialYears. You can modify this code as needed. 
    CollectionViewSource financialYearsViewSource = ((CollectionViewSource)(this.FindResource("financialYearsViewSource"))); 
    ObjectQuery<FinancialYear> financialYearsQuery = this.GetFinancialYearsQuery(lGFananceEntities); 
    financialYearsViewSource.Source = financialYearsQuery.Execute(System.Data.Objects.MergeOption.AppendOnly); 
    cboFinancialYear.SelectedItem = thisYear; 
} 

然而,这似乎并没有产生任何影响,并且所选项目在组合框中是在FinancialYear表中的第一年。

有人可以指出我做错了什么吗?我环顾四周,但组合框中的大多数默认值实现似乎都是“选择一年”排序的指令文本,而我想实际选择一个默认值。

+0

你的ItemsSource是什么类型? – gaurawerma 2012-07-30 04:45:19

+0

@gaurawerma嗯,有趣。 xaml应该有一个Source属性。我将它固定在下面,但仍然不起作用: 但它仍然不起作用 – mcalex 2012-07-30 04:53:04

+0

我的意思是什么是您的ItemsSource中的实体类型 – gaurawerma 2012-07-30 04:55:10

回答

1

SelectedItem具有对ItemsSource对象的引用。如果您的ItemsSource是IEnumerable<FinancialYear>类型,则不能将SelectedItem设置为字符串。

+0

okies,知道我做错了什么。所以,我是否正确思考(正如我对ethicallogic的评论),我需要获得一个实体并将其粘贴在SelectedItem中,而不是我的字符串? – mcalex 2012-07-30 05:18:27

+0

是的。但是你不应该在后面的代码中写这个逻辑。这打破了MVVM模式。相反,您应该将您的SelectedItem与viewmodel中的属性绑定。 – gaurawerma 2012-07-30 05:34:26

+0

呀。我正试图朝那个方向前进,但我发现的所有通道都不起作用。我想我会去做,然后重构为优雅。谢谢你的帮助。还没有实施的解决方案,但要标记两个答案,因为他们都告诉我我做错了什么。 – mcalex 2012-07-30 06:46:05

0

cboFinancialYear.SelectedValue=thisYear.FinancialYearID; 

使用的SelectedValue代替的SelectedItem,我希望这会有所帮助。

+0

感谢ethicallogics。我认为这会使我指向正确的方向。我应该(可能更早)提到我的GetCurrentFinancialYear方法当前只返回字符串表示。如果我将它设置为返回实体的查询,那么我应该可以比较一下,是吗? – mcalex 2012-07-30 05:17:04