我在flipview中有以下简单的数据模板。
<FlipView x:Name="MyFlipview" ItemsSource="{x:Bind Path=ViewModel.Fleas}" >
<FlipView.ItemTemplate>
<DataTemplate x:DataType="types:FleaType">
<TextBox x:Name ="Header" Text= "{Binding Path = ViewModel.GeneralComment}"></TextBox>
<TextBox x:Name ="FleaName" Text= "{Binding Path = FleaName}"></TextBox>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
但我不知道如何将Header文本框绑定到viewmodel上的generalcomment,因为Generalcomment不是跳蚤收藏的一部分。如果有人知道如何做到这一点,那就非常感激。
由于
答案 0 :(得分:1)
您正在寻找RelativeSource
:
<FlipView x:Name="MyFlipview" ItemsSource="{x:Bind Path=ViewModel.Fleas}" >
<FlipView.ItemTemplate>
<DataTemplate x:DataType="types:FleaType">
<TextBox x:Name ="Header" Text= "{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DataContext.GeneralComment}"></TextBox>
<TextBox x:Name ="FleaName" Text= "{Binding Path = FleaName}"></TextBox>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
这里有更多信息:RelativeSource on MSDN,基本上它正在做的是“在我上面找到UserControl
元素,并绑定到它将成为视图模型的DataContext
,并且那么GeneralComment
属性“;很明显,如果您使用UserControl之外的其他内容(例如Page等),则将其替换为该类型。
正如GeorgeT所指出的那样,UWP不支持AncestorType
,因此有解决方法,如下所述:How to do relativesource mode find ancestor (or equivalent) in UWP
我可能这样做的方法是只为用户控件设置一个名称,然后执行:
{Binding ElementName=MyUserControl, Path=DataContext.GeneralComment}