Свойство зависимости, вызывающее исключение XamlParseException AG_E_PARSER_BAD_PROPERTY_VALUE - PullRequest
0 голосов
/ 08 апреля 2009

Я создал два элемента UserControl, первый из которых отображает список объектов, а второй - сведения об объекте, выбранном из первого. Я создал свойство зависимости для первого элемента управления и привязываю каждый элемент UserControl к объекту, объявленному в моей коллекции ресурсов. Я видел сообщения в блоге, описывающие это, но не могу заставить его работать. Я получаю исключение XamlParseException. Самое смешное, что исключение возникает только тогда, когда я установил привязку 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 Ответ

2 голосов
/ 09 апреля 2009

Ваш Xaml неверен, судя по всему. Вы пропускаете свойство, которое вам нужно привязать для двустороннего. Вы говорите, что хотите связать объект, определенный в источнике, но не указываете свойство этого ресурса для привязки. В этом случае ресурс SelectedItem является объектом типа Item ... вам необходимо привязать к свойству Item. Поэтому, если у элемента есть свойство с именем value, ваш Xaml может выглядеть так:

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

Попробуйте вместо этого:

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

И.Б..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...