2013-08-27 4 views
8

У меня есть следующий код, который заполняет мой пользовательский элемент управления в виде строк и столбцов. Пользовательский элемент управления, который заполняется, содержит кнопку, ссылки, текстовое поле и т. Д. Когда определенная кнопка нажата на конкретном элементе управления пользователя в определенной строке/столбце, мне нужно знать, для какой кнопки User Control была нажата кнопка. Вот XAML, который заселение пользовательских элементов управления в строки и столбцыПолучение выбранного элемента в ItemsControl

<ItemsControl ItemsSource="{Binding Templates}" Width="{Binding GridWidth}"> 
     <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <UniformGrid Columns="{Binding NumColumns}" /> 
       </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
       <ItemsControl.ItemContainerStyle> 
       <Style> 
        <Setter Property="Grid.Column" Value="{Binding ColumnIndex}" /> 
        <Setter Property="Grid.Row" Value="{Binding RowIndex}" /> 
        </Style> 
       </ItemsControl.ItemContainerStyle> 
       <ItemsControl.ItemTemplate> 
    </ItemsControl> 

Шаблоны в основном коллекция UserControls, которые в настоящее время проживают в строк/столбцов. Предпочтительно, я хочу сделать это в ViewModel, но решение в коде позади пока будет работать.

+2

Элемент 'ItemsControl' не отслеживает выбранный элемент. Если вам нужно это поведение, используйте что-то вроде «ListBox» и перезапишите шаблон, например [this] (http://stackoverflow.com/a/9069382/302677) – Rachel

ответ

12

ItemsControl не может выбрать элементы, только настоящие коллекции. Только Selector или один из его потомков могут выбрать элементы.

Для вашего сценария, думаю, ListView с GridView подойдет. Когда пользователь щелкнет элемент управления в строке, событие будет пузыриться до ListView, и элемент будет выбран. Вы можете переопределить стили по умолчанию, чтобы он не отображался как выбранная строка: WPF ListView turn off selection.

+0

Как я могу отобразить коллекцию UserControls в ListView? – WAQ

+1

Вы можете установить их как шаблон данных своих товаров – CKII

Смежные вопросы