0

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

页面.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>

项目列表.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); }
    }

欢迎任何建议!

4

1 回答 1

2

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

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

试试这个:

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

ib。

于 2009-04-08T21:19:50.783 回答