主题行说明了一切!我有一个用户控件,可以成功绑定到一个Fullname对象 - 即它工作正常。
我现在需要显示这些列表,并且,当控件位于ItemsControl.Template中的DataTemplate中时,这也可以正常工作。
但是,控件有一个属性(InEditMode),它不是Fullname对象的属性,而是具有ItemsControl绑定的FullnameList属性的对象,通过ItemsSource。当控件不在列表中并绑定到名为ParentInEditMode和ParentFullname的父兄弟属性时,此InEditMode属性可正常工作。
问题是 - 当控件是ItemsControl时,“获取”父对象的编辑模式属性需要什么样的绑定表达式?
或者,我应该重新设计Fullname对象以包含EditMode属性吗?
非常感谢提前!
项目(即绑定到ItemsControl的集合中的项目)没有这样的属性。代码很简单:
<ItemsControl ItemsSource="{Binding Path=FullnameList}">
...then...
<ItemsControl.ItemTemplate>
<DataTemplate>
<jasControls:NameView
NameValue="{Binding Path=.}"
InEditMode= ??????? />
整体父(窗口的视图模型)具有属性:
Fullname(用于测试NameView的单个项目,它使用以下任何列表控件之外的xaml完美地运行:
<jasControls:NameView NameValue="{Binding Path=Fullname}" InEditMode="{Binding Path=ParentInEditMode}"/>
我想将编辑模式应用于整个集合 - 使该标志成为Fullname的一部分似乎不正确!?
答案 0 :(得分:15)
我找到了自己问题的答案,我希望能帮助别人。 我的工作语法是:
<StackPanel>
<ItemsControl ItemsSource="{Binding Path=FullnameList}">
...then...
<ItemsControl.ItemTemplate>
<DataTemplate>
<jasControls:NameView
NameValue="{Binding Path=.}"
InEditMode= "{Binding DataContext.ParentInEditMode,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type StackPanel}}}" />
这正确地选取属于FullnameList的兄弟属性并将其传递给数据模板项。更多的是运气而不是判断,但我希望这是一种有效的方法!
答案 1 :(得分:0)
对于ItemsSource中的每个Item,ItemsControl创建指定的DataTemplate,并为其DataContext分配相应的Item。现在,每个DataTemplate都可以在其数据上下文中绑定到其项目。
所以我想你的项目确实有一个属性“ParentInEditMode”;绑定到该属性应该没有问题。
如果不起作用,请使用一些代码更新您的问题。