如何从ItemsControl中的Item访问兄弟姐妹?

时间:2010-07-21 05:15:05

标签: c# silverlight silverlight-4.0 itemscontrol

我有一个ItemsControl:

<StackPanel>
    <ItemsControl x:Name="TopicList">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <local:TopicListItem Title="{Binding Title}" LocationCloud="{Binding Locations}" TagCloudData="{Binding TagCloudData}" SparklineData="{Binding SparklineData}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</StackPanel>

然后我得到一些XML并使用LINQ将其转换为IEnumerable<ListObj>,然后将其附加到TopicList.ItemsSource。如您所见,列表中唯一的元素是UseControl,我自称为TopicListItem。我希望能够从TopicListItem.xaml.cs文件访问ItemsControl具有的项目索引,以便当我单击其中一个来执行打开操作时,我可以关闭其余部分。

感谢您的帮助:)

(我尝试过Accordion和AccordionItems,为我的口味加油:D)

1 个答案:

答案 0 :(得分:0)

自从我在公司内部得到一些帮助后,我会自己回答。

我这样做的方法是简单地访问ItemsControl元素并从Items属性中获取集合。

MainPage root = Application.Current.RootVisual as MainPage;
foreach(MyClass c in root.TopicList.Items) 
{
    // loop through them all and close/open conditionally
}

我希望这有助于其他任何人。