0

プログラム内にデータ テンプレートがバインドされたリストボックスがありますlist<class>

<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 に答える