【问题标题】:Access property of DataContext in ItemTemplateItemTemplate 中 DataContext 的访问属性
【发布时间】:2011-01-03 00:26:05
【问题描述】:

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

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

DataContext 有两个属性:ObservableCollection<Item> EntriesVisibility DetailsVisiblity。 Item 类有两个属性:Title 和 Details。

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

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

【问题讨论】:

  • 请提供您的类结构代码。

标签: xaml windows-phone-7


【解决方案1】:

您可以命名 ListBox,并在 Binding 中使用 ElementName 引用它,在 Path 中使用 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>

【讨论】:

  • @amrinder:这是你想要的还是我误解了这个问题?
  • 非常感谢,这解决了我将近 2 个小时的问题(我是 windows 手机的初学者。)
猜你喜欢
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 2010-12-03
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多