引起XamlParseException的依赖项属性AG_E_PARSER_BAD_PROPERTY_VALUE
问题描述:
我创建了两个UserControls,其中第一个显示对象列表,第二个显示对象的详细信息,第一个选择对象。我在第一个控件上创建了一个依赖项属性,并将每个UserControl绑定到在我的资源集合中声明的对象。我已经看过描述这个的博客文章,但似乎无法使其发挥作用。我得到一个XamlParseException。有趣的是只有当我在我的第一个UserControls上设置绑定Mode = TwoWay时才会发生异常。下面的代码...引起XamlParseException的依赖项属性AG_E_PARSER_BAD_PROPERTY_VALUE
Page.xaml
<UserControl.Resources>
<local:Item x:Key="SelectedItem" />
</UserControl.Resources>
...
<controls:ItemList
SelectedItem="{Binding Mode=TwoWay, Source={StaticResource SelectedItem}}">
</controls:ItemList >
...
<controls:ItemDetails
DataContext="{Binding Source={StaticResource SelectedItem}}">
</controls:ItemDetails>
ItemList.xaml.cs
public partial class ItemList: UserControl
{
public ItemList()
{
InitializeComponent();
}
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem", typeof(Item), typeof(ItemList), new PropertyMetadata(new Item()));
public Item SelectedItem
{
get { return (Item)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty , value); }
}
任何建议,欢迎!
答
从外观上看,您的Xaml不正确。您错过了需要绑定到双向的属性。你在说你想绑定到源代码中定义的对象,但是你没有指定该资源的属性来绑定。在这种情况下,SelectedItem资源是类型为Item的对象...,您需要绑定到Item的属性。因此,如果项目有一个属性命名值,XAML中看起来是这样的:
SelectedItem="{Binding Value, Source={StaticResource SelectedItem}, Mode=TwoWay}"
试试这个:
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
IB。
很好的解释。谢谢! – 2009-04-10 13:51:23