wpf 访问 lisbox 所选项目(如果它不是字符串)

发布于 2024-11-27 20:45:45 字数 740 浏览 2 评论 0原文

我有一个列表框,它显示 Movie 对象数组中的 Name 属性。

<ListBox Name="listBox1" SelectionChanged="listBox1_SelectionChanged">
                     <ItemsControl ItemsSource="{Binding}" >
                          <ItemsControl.ItemTemplate >
                              <DataTemplate >                                      
                                     <TextBlock Name="textBlock1" Text="{Binding Name}"/> 
                              </DataTemplate>
                          </ItemsControl.ItemTemplate>
                     </ItemsControl>
                 </ListBox>

如何访问代码中 ListBox 内的 textBlock 的文本?
我必须在代码中使用 Name 属性的值

I have a listbox which displays Name property from an array of Movie objects

<ListBox Name="listBox1" SelectionChanged="listBox1_SelectionChanged">
                     <ItemsControl ItemsSource="{Binding}" >
                          <ItemsControl.ItemTemplate >
                              <DataTemplate >                                      
                                     <TextBlock Name="textBlock1" Text="{Binding Name}"/> 
                              </DataTemplate>
                          </ItemsControl.ItemTemplate>
                     </ItemsControl>
                 </ListBox>

How can I access the text of the textBlock that's inside the ListBox in Code?
I must use the value of the Name property in my code

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沧笙踏歌 2024-12-04 20:45:45

列表框报告的所选项目向您公开拥有 TextBlock 中绑定的 Name 属性的对象。至此游戏结束。

The selected item reported by the listbox exposes you the object that owns the Name property bound in the TextBlock. At this point the game is over.

高跟鞋的旋律 2024-12-04 20:45:45

当您执行上述操作时,itemscontrol 内的每个文本块都有一个名称 textblock1,其范围也仅限于每个项目容器。

如果您想要单独使用每个文本块,我通常会执行以下操作:

<TextBlock Text="{Binding Name}" Loaded="TextBlock_Loaded"/>

并在代码中以您希望的方式注册这些文本框。可能是一个列表,

List<TextBlock> TextBlockList = new List<TextBlock>();

private void TextBlock_Loaded(object sender, RoutedEventArgs e)
        {
            TextBlockList.Add((TextBlock)sender);           
        }

例如,访问这些内容:

String FirstItem = TextBlockList.ElementAt(0).Text;

When you do the above every textblock inside the itemscontrol has a name textblock1 that too with a scope limited to each item container.

If you want each of those textblocks individually, I usually do something like:

<TextBlock Text="{Binding Name}" Loaded="TextBlock_Loaded"/>

And in the code register those textboxes in whatever way you wish. A list probably,

List<TextBlock> TextBlockList = new List<TextBlock>();

private void TextBlock_Loaded(object sender, RoutedEventArgs e)
        {
            TextBlockList.Add((TextBlock)sender);           
        }

And for example, access the stuff as:

String FirstItem = TextBlockList.ElementAt(0).Text;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文