【发布时间】:2018-11-28 14:34:35
【问题描述】:
我在 ItemsControl 中有一个 ObservableCollection 绑定。在这个 ItemsControl 中创建了一些 TextBoxes,ObservableCollection 中的每个对象一个。
现在我需要选择文本并根据所选对象突出显示它,但我无法做到。
我的xml:
<StackPanel x:Name="stackPanel">
<StackPanel.Children>
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding MyContent}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel.Children>
</StackPanel>
这是我的代码,被一个事件调用:
for (int i = 0; i < this.stackPanel.Children.Count; i++)
{
TextBox t = this.stackPanel.Children[i] as TextBox;
if (t != null)
{
// do selection
}
}
// and also in this way:
for (int i = 0; i < itemsControl.Items.Count; i++)
{
UIElement uiElement =
(UIElement)itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
TextBox t2 = (uiElement as TextBox);
if (t2 != null)
{
// do selection
}
}
我怎样才能得到这些文本框? 谢谢。
【问题讨论】:
-
我的建议是尽量避免直接操作 UI,将它们绑定到一个对象并修改该对象
-
这不是我所需要的,但给了我一个解决它的想法。谢谢
标签: c# wpf itemscontrol