我有一个Combo Box,它使用ObjectDataProvider将ItemsSource绑定到枚举,并且其SelectedItem属性绑定到businessobject的属性。 由于某种原因,它首先绑定SelectedItem而第二个绑定ItemsSource,因此覆盖businessobject属性上的默认值。任何想法为什么和可能修复? 在此先感谢。
XAML:
<CollectionViewSource x:Key="Units">
<CollectionViewSource.Source>
<ObjectDataProvider MethodName="GetNames" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="BO:Unit"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</CollectionViewSource.Source>
</CollectionViewSource>
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Width="80"
ItemsSource="{Binding Source={StaticResource Units}}"
SelectedItem="{Binding Path=Unit}"/>
答案 0 :(得分:0)
我尝试了你的代码并且工作正常,所以我不认为Bindings的顺序是你的问题。我注意到的一件事是您使用GetNames
作为ObjectDataProvider
的MethodName,因此ComboBox
ItemsSource将是字符串的集合,而不是枚举Unit
的集合。如果这是您的意图,则属性Unit
应为string
示例
public class NamesViewModel
{
public NamesViewModel(string unit)
{
Unit = unit;
}
public string Unit
{
get;
set;
}
}
如果您将GetNames
更改为GetValues
,那么它将适用于枚举类型Unit
的属性
示例
public class ValuesViewModel
{
public ValuesViewModel(Unit unit)
{
Unit = unit;
}
public Unit Unit
{
get;
set;
}
}