Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > WPF ItemsControl. Узнать невидимые елементы.


Автор: Bladerender 21.12.2014, 17:39
Есть у меня ItemsControl на форме.  В него через итем-соурс заходит коллекция елементов. 

На основе каждого елемента коллекции итем-темплейтом задано, что строится визуальный елемент, состоящий из кнопки и картинки.

Задача. Когда я делаю ресайз, вичислить, какие из елементов попали на UI за область видимости итем-темплейта.

Или хотя бы узнать размер кажого визуального елемента в ИтемсКонтроле. Там бы я уже калькулятор сам придумал. Спасибо.


Код

<ItemsControl ItemsSource="{Binding Items, Mode=TwoWay}"
                          Focusable="False"
                          SizeChanged="ItemsControl_SizeChanged"
                          x:Name="VisualItems">

                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>

                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Button Content="{Binding Title}" Click="ItemClick">
                                <Button.Style>
                                    <Style TargetType="Button">
                                        <Setter Property="Background" Value="Transparent"/>
                                        <Setter Property="BorderBrush" Value="Transparent"/>
                                    </Style>
                                </Button.Style>
                            </Button>
                       </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>


Автор: Ilya81 22.12.2014, 10:17
Сами control'ы можно получить через http://msdn.microsoft.com/ru-ru/library/system.windows.controls.itemscontrol.itemcontainergenerator(v=vs.110).aspx. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)