0

我有一个列表框,其中的数据模板绑定到list<class>程序中的 a。

<DataTemplate x:Key="pTemplate">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Ref}" Padding="5,0,0,0"/>
                <StackPanel Name="taggedA" Tag="{Binding A}" Orientation="Horizontal">
                    <TextBlock Name="selectedA" Text="{B}" />
                </StackPanel>
                <Image Name="ind" Width="40" Height="40" />
            </StackPanel>
</DataTemplate>

单击按钮时,我想查看列表框的所有元素并检查 stackPaneltaggedA的标签 == textblockselectedA的文本。

这要对列表框中的每个项目进行,数据模板如上。如何才能做到这一点?

4

2 回答 2

1

更容易直接比较绑定源:

ListBox l = myListBox;
for (int i = 0; i < l.Items.Count; i++)
{
    var boundObject = (MyClass)l.Items[i];
    MessageBox.Show("They are equal? " + (boundObject.A == boundObject.B));
}
于 2012-07-03T01:54:58.690 回答
0

我同意@dbaseman。但是,如果您打算这样做,则可以执行以下操作:

private void button_click(object sender, RoutedEvent e)
{
    foreach(var item in MyListBox.Items)
    {
        ListBoxItem lbi = MyListBox.ItemContainerGenerator.ContainerFromItem(item);
        StackPanel taggedApanel = (lbi.Content as StackPanel).Children[1];
        //Do whatever you need to do here
    }
}
于 2012-07-03T03:08:39.537 回答