контроль моих товаров:
<ItemsControl x:Name="MyItemsControl" Style="{StaticResource ItemsControlStyle}" />
<Style TargetType="{x:Type ItemsControl}" x:Key="ItemsControlStyle">
<Setter Property="ItemTemplate" Value="{StaticResource ItemsControlDataItem}"></Setter>
</Style>
<DataTemplate x:Key="ItemsControlDataItem" >
<Ellipse Width="45" Height="45"></Ellipse>
</DataTemplate>
iv'e подключил событие, чтобы увидеть, когда основная коллекция изменилась:
((INotifyCollectionChanged)MyItemsControl.Items).CollectionChanged += new NotifyCollectionChangedEventHandler(ClientWindow_CollectionChanged);
Первое, что мне нужно, это способ извлечь ItemsControl, которому принадлежит эта ItemCollection
во-вторых, необходимо пройти через все элементы данных как их DataTemplate, то есть как Ellipse
так как я не хочу выполнять над ними Преображение.
void ClientWindow_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// here i need to traverse and make my change , how do i extract the ellipse items
// how do i get the itemsControl associated with the ItemCollection which triggered this event
ItemCollection collection = sender as ItemCollection ;
foreach (object item in collection)
{
// here i would need the ellipse that the object represents
// EDIT : i'm guessing this is how i would get the ellipse
// but how would i get the itemsControl ?
var ellipse = _itemsControl.ItemContainerGenerator.ContainerFromItem(item ) as Ellipse;
}
}
просто чтобы уточнить, я не хочу проходить через коллекцию и извлекать базовый тип, назначенный через табличку данных.