【问题标题】:Dependency Property causing XamlParseException AG_E_PARSER_BAD_PROPERTY_VALUE导致 XamlParseException AG_E_PARSER_BAD_PROPERTY_VALUE 的依赖属性
【发布时间】:2010-10-18 05:51:49
【问题描述】:

我创建了两个 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); }
    }

欢迎提出任何建议!

【问题讨论】:

    标签: silverlight data-binding dependency-properties


    【解决方案1】:

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

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

    试试这个:

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

    ib.

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多