0

例如,我有ListBox两个TextBlock这样的:

<ListBox Name="listboxNews"
         SelectionChanged="listboxNews_SelectionChanged">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Width="400"
                        Height="70">
                <TextBlock Text="{Binding Title}" name="title" />
                <TextBlock Text="{Binding Description}" name="desc" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

正如你所看到的,我有一个listboxNews_SelectionChanged方法,我需要选择第一个 TextBlock 的文本(如果按名称可能,那么它将独立于文本块的顺序),但是这个是我选择的。例如,如果第一个项目有标题“项目 1”和第二个“项目 2”,我点击第二个,我需要得到“项目 2”。我正在尝试使用 listboxNews.Items,但我想这是不正确的。感谢帮助。

4

2 回答 2

1

SelectedItem 属性将保存当前选定的对象。您可以将其转换并获取 Title 属性。

试试这个代码:

private void listboxNews_SelectionChanged(object sender, SelectionChangedEventArgs e) {
  var current = listboxNews.SelectedItem as MyObjectType;
  MessageBox.Show(current.Title);
}

MyObjectType随对象的类型而变化。

于 2013-05-10T23:46:39.183 回答
0

这是一个有效的 Windows Phone 8 解决方案的复制和粘贴。

这也在 WPF 中成功测试。

    私人无效ListBox_SelectionChanged_1(对象发送者,SelectionChangedEventArgs e)
            {
                foreach (UIElement item in (sender as ListBox).Items)
                {
                    if ((sender as ListBox).SelectedItem == item)
                    {
                        foreach (UIElement InnerItem in (item as StackPanel).Children)
                        {
                            if ((InnerItem is TextBlock) && (InnerItem as TextBlock).Name.Equals("title"))
                            {
                                MessageBox.Show((InnerItem as TextBlock).Text);
                            }
                        }
                    }
                }
            }
于 2013-05-10T21:56:43.007 回答