如何从DataTemplate的父ViewModel类获取属性

时间:2014-12-04 09:02:07

标签: c# xaml mvvm binding parent

我正在使用MVVVM Light,因此我将Page的DataContext设置为Locator。然后我将Pivot的ItemSource设置为“myFirstVM”ViewModel类中的集合属性。但是如何将TextBox的dataTemplate中的PivotItem的标题文本设置为“MyProperty”,这也是在“myFirstVM”类中定义的?

我看一下这个例子,但无法弄清楚: How to access Parent's DataContext in Window 8 store apps

这是我的代码:

<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:myApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ViewModel="using:myApp.ViewModel"
x:Class="myApp.MyTripsPage"
mc:Ignorable="d"
DataContext="{Binding Source={StaticResource Locator}}">

<Grid x:Name="LayoutRoot">
    <Pivot Name="myPivot"
           Tag="{Binding}"
           ItemsSource="{Binding myFirstVM.DataSource}"
           ItemTemplate="{Binding myFirstVM.ViewDataTemplate}">
        <Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding MyProperty, ElementName=myPivot}"/>
            </DataTemplate>
        </Pivot.HeaderTemplate>
    </Pivot>
</Grid>

1 个答案:

答案 0 :(得分:0)

在绑定中使用ElementName将绑定到元素本身(在本例中为Pivot),而您希望绑定到DataContext Pivot中的某些内容,所以只需将DataContext添加到您的路径:

<TextBlock Text="{Binding DataContext.myFirstVM.MyProperty, ElementName=myPivot}"/>