ItemTemplate 中 DataContext 的访问属性 [英] Access property of DataContext in ItemTemplate

查看:17
本文介绍了ItemTemplate 中 DataContext 的访问属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的数据上下文有两个属性:Items 是一个集合,DetailsVisiblityVisiblity 类型的 enum.

My datacontext has two properties: Items which is a collection and DetailsVisiblity which is enum of type Visiblity.

在页面上,我有一个带有 ItemsSource="{Binding Entries}"Listbox.在 DataTemplate 中,我可以将东西绑定到 Items 的属性,但是如何访问 DetailsVisiblity 这是 DataContext 的属性?

On the page I have a Listbox with ItemsSource="{Binding Entries}". Inside the DataTemplate, I can bind stuff to properties of Items, but how do I get access to DetailsVisiblity which is a property of DataContext?

DataContext 有两个属性:ObservableCollection条目Visibility DetailsVisiblity.Item 类有两个属性:Title 和 Details.

DataContext has two properties: ObservableCollection<Item> Entries, and Visibility DetailsVisiblity. Item class has two properties: Title and Details.

这是视图.如何将第二个 TextBlockVisiblity 绑定到 DetailsVisiblity 属性?

Here is the view. How do I bind Visiblity of the second TextBlock to DetailsVisiblity property?

<ListBox ItemsSource="{Binding Items}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Title}" />
                <TextBlock Text="{Binding Details}" Visibility="{Binding ???}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

推荐答案

您可以命名 ListBox,并在 Binding 中使用 ElementName 引用它,在 Path 中使用 DataContext.DetailsVisibility

You could name the ListBox and in the Binding you reference it with ElementName, and in Path you use DataContext.DetailsVisibility

<ListBox x:Name="listBox" ItemsSource="{Binding Items}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Title}" />
                <TextBlock Text="{Binding Details}"
                           Visibility="{Binding ElementName=listBox,
                                                Path=DataContext.DetailsVisibilty}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这篇关于ItemTemplate 中 DataContext 的访问属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆