访问包含在ListBox中的TextBlock
本文关键字:中的 TextBlock ListBox 包含 访问 | 更新日期: 2023-09-27 17:54:38
我有一个文本块这是在一个列表框内,我试图写一个if语句这是依赖于这个文本块的内容。我试图从我命名为"category1"的TextBlack中获取数据,但是当我试图编写我的if语句时,我得到的消息只是说
"名称category1在当前上下文中不存在"
我累了移动的TextBLock的ListBox和它的工作很好,但不会工作,而它的内部有。有人知道如何引用这个文本块吗?
这是我的XAML代码 <ListBox x:Name="HINList" Margin="0,300,-12,0" ItemsSource="{Binding Details}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding HINNumber}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding CategoryLetter}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="category1" Text="{Binding Category1}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Category2}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Category3}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
假设您在文件后面的代码中编写if语句,不会是这样的:
if(((WhateverTypeIsInDetailsCollection)HINList.SelectedItem).Category1 == something) {
// then do whatever you want
}
正如Russell所指出的,列表中的每个条目都有一个类别1项。
这是由于xaml命名域。DataTemplate内部的名称与外部的名称范围不同,这就是为什么你不能访问它们的原因(@Russell指出的是这样做的部分原因)。
我认为您希望访问绑定到Details集合的HINList ListBox的选定项上的"Category1"属性的字段。你可以做的是将Category1的绑定设置为双向绑定,并将ListBox的SelectedItem
绑定到Detail项,如下所示:
<ListBox x:Name="HINList" ItemsSource="{Binding Details}"
SelectedItem={Binding SelectedDetailItem, Mode=TwoWay}>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding Category1, Mode=TwoWay}" TextWrapping="Wrap" .../>
<!-- the other fields -->
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
后台代码
if(SelectedDetailsItem.Category1==...)
{
....
}
希望这对你有帮助