2013-08-27 19 views
8

Ich habe den folgenden Code, der mein Benutzersteuerelement in Form von Zeilen und Spalten füllt. Das Benutzersteuerelement, das gerade ausgefüllt wird, enthält Schaltflächen, Links, Textfelder usw. Wenn eine bestimmte Schaltfläche in einem bestimmten Benutzersteuerelement in einer bestimmten Zeile/Spalte gedrückt wird, muss ich wissen, für welches Benutzersteuerelement diese Schaltfläche gedrückt wurde. Hier ist der XAML, die die Benutzersteuerungen in Zeilen und Spalten wird BevölGewähltes Element in 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> 

Templates ist im Grunde eine Sammlung von Benutzersteuerelementen, die in Zeilen/Spalten bevölkert werden. Vorzugsweise möchte ich dies in ViewModel tun, aber Lösung in Code für jetzt funktioniert auch.

+2

Ein 'ItemsControl' verfolgt das ausgewählte Objekt nicht. Wenn Sie dieses Verhalten möchten, verwenden Sie etwas wie eine 'ListBox' und überschreiben Sie die Vorlage, wie [this] (http://stackoverflow.com/a/9069382/302677) – Rachel

Antwort

12

ItemsControl kann keine Objekte auswählen, nur vorhandene Sammlungen. Nur ein Selector oder einer seiner Nachkommen kann Elemente auswählen.

Für Ihr Szenario würde ich eine ListView mit GridView passen. Wenn der Benutzer auf ein Steuerelement in der Zeile klickt, würde das Ereignis zu ListView blasen und das Element würde ausgewählt werden. Sie können die Standardstile überschreiben, sodass sie nicht als ausgewählte Zeile angezeigt wird: WPF ListView turn off selection.

+0

Wie kann ich die UserControls-Auflistung in ListView anzeigen? – WAQ

+1

Sie können sie als Datenvorlage für Ihre Artikel festlegen – CKII

Verwandte Themen