是否可以从列表视图项模板中访问控件视图模型中的属性?

时间:2013-07-31 15:18:08

标签: c# xaml windows-runtime

我正在创建一个功能,当您浏览菜单项时,您将获得返回的面包屑。为了在我的Windows 8应用程序中创建它,我正在生成一组项目,并在我浏览菜单时添加到该集合。

用于显示面包屑的xaml代码是:

<ListView VerticalAlignment="Top"
          HorizontalAlignment="Left"
          Margin="120,60,0,0"
          ItemsSource="{Binding Parents}">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text=">>" />
                <Button Content="{Binding Name}" Command="{Binding OpenCommand}" CommandParameter="{Binding}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

虽然这有效,但我对按钮的绑定并不是100%满意。问题是我正在调用已经在我的整体控件的视图模型上启动并运行的功能,这似乎要求我在我的内部项目命令上有一个OpenCommand属性。

是否可以将我的按钮的Command=属性绑定到控件的整体视图模型上的命令,而不是列表项本身?

1 个答案:

答案 0 :(得分:2)

应该可以通过以下方式实现:

<ListView x:Name="listView" ...>
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text=">>" />
                <Button Content="{Binding Name}"
                    Command="{Binding DataContext.OpenCommand, ElementName=listView}"
                    CommandParameter="{Binding}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
    ...
</ListView>