2013-08-27 14 views
8

Mam następujący kod, który wypełnia mojej kontroli użytkownika w postaci wierszy i kolumn. Kontrolka użytkownika, która jest zapełniona, zawiera przycisk, linki, pole tekstowe itp. Po naciśnięciu określonego przycisku w konkretnej Kontroli użytkownika w określonym wierszu/kolumnie, muszę wiedzieć, dla którego przycisku Kontrola użytkownika ten przycisk został naciśnięty. Oto XAML, który jest wypełnianie kontroli użytkownika w wierszach i kolumnachUzyskiwanie wybranego elementu w 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> 

szablonów jest w zasadzie zbiorem UserControls, które są zaludnione w wierszach/kolumnach. Najlepiej chcę to zrobić w ViewModelu, ale rozwiązanie w kodzie za teraz będzie działać.

+2

Funkcja "ItemsControl" nie śledzi wybranego elementu. Jeśli chcesz tego zachowania, użyj czegoś takiego jak 'ListBox' i nadpisaj szablon, jak [to] (http://stackoverflow.com/a/9069382/302677) – Rachel

Odpowiedz

12

Nie można wybrać elementów, tylko prezentować kolekcje. Tylko Selector lub jeden z jego potomków może wybierać elementy.

Dla twojego scenariusza, myślę, że zmieściłoby się ListView z GridView. Gdy użytkownik kliknie kontrolkę w wierszu, zdarzenie zostanie zbuforowane do ListView, a element zostanie wybrany. Możesz zastąpić domyślne style, aby nie wyświetlały się jako wybrana linia: WPF ListView turn off selection.

+0

jak mogę wyświetlić kolekcję UserControls w ListView? – WAQ

+1

Możesz ustawić je jako szablon danych swoich produktów – CKII

Powiązane problemy