我创建了两个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); }
}
欢迎任何建议!
答案 0 :(得分:2)
你的Xaml看起来不正确。您缺少需要双向绑定的属性。您说要绑定到源中定义的对象,但是您没有指定要绑定到的资源的属性。在这种情况下,SelectedItem资源是Item类型的对象...您需要绑定到Item的属性。因此,如果item具有名为value的属性,则您的Xaml可能如下所示:
SelectedItem="{Binding Value, Source={StaticResource SelectedItem}, Mode=TwoWay}"
请改为尝试:
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
IB。