导致XamlParseException的依赖项属性AG_E_PARSER_BAD_PROPERTY_VALUE

时间:2009-04-08 06:32:52

标签: silverlight data-binding dependency-properties

我创建了两个UserControl,第一个显示对象列表,第二个显示有关从第一个对象中选择的对象的详细信息。我在第一个控件上创建了一个依赖项属性,并将每个UserControl绑定到我的Resources集合中声明的对象。我看过博客文章描述了这一点,但似乎无法让它发挥作用。我得到一个XamlParseException。有趣的是只有当我在第一个UserControls上设置绑定Mode = TwoWay时才会发生异常。这是代码......

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

欢迎任何建议!

1 个答案:

答案 0 :(得分:2)

你的Xaml看起来不正确。您缺少需要双向绑定的属性。您说要绑定到源中定义的对象,但是您没有指定要绑定到的资源的属性。在这种情况下,SelectedItem资源是Item类型的对象...您需要绑定到Item的属性。因此,如果item具有名为value的属性,则您的Xaml可能如下所示:

SelectedItem="{Binding Value, Source={StaticResource SelectedItem}, Mode=TwoWay}"

请改为尝试:

SelectedItem="{Binding SelectedItem, Mode=TwoWay}"    

IB。