Hallo,
ich möchte gerne per Code den Focus auf ein bestimmtes ListBoxItem setzen.
Die SelectedIndex Eigentschaft setzen und anschliessend den Focus auf die Listbox selbst, bringt mir nichts, da der Focus erstmal nicht sichtbar ist.
Den Focus auf das SelectedItem setzen geht auch nicht, da ListBoxItem in meinem Fall eine eigene Klasse ist und nicht ein FrameworkElement.
Hat jemand einen Tipp?
Gruß Thorsten
hallo eclere,
Den Focus auf das SelectedItem setzen geht auch nicht, da ListBoxItem in meinem Fall eine eigene Klasse ist und nicht ein FrameworkElement.
Wovon erbt deine Klasse denn? Um fokussieren zu können musst du zumindest von UIElement erben.
Weiterhin musst du in dieser Klasse UIElement.IsFocusable auf true setzten.
Dann wie gewohnt per UIElement.Focus() den Focus setzen.
Hallo feadur,
er erbt gar nicht, oder? Es geht doch wohl darum, den Focus auf einen bestimmten Eintrag der ListBox zu setzen.
herbivore
hallo herbivore,
ich habe es jetzt so verstanden, dass er statt ListBoxItem Objekten eigene Objekte in die ListBox einfügt, was ja in WPF möglich ist.
Also in der Form:
<ListBox>
<MeinControl>Item 1</MeinControl>
<MeinControl>Item 2</MeinControl>
</ListBox>
Wenn ListBoxItem Objekte verwendet werden sehe ich kein Problem fürs fokussieren, da diese über FrameworkElement von UIElement erben.
Hallo,
ich füge ein ganz normale Klasse ein. Als Simples Beispiel sei der String genannt.
Ich habe aber zufällig einen Trick herausbekommen wie man das machen kann:
Erstmal die ItemSource Eigenschaft festlegen:
Me.lstItems.ItemsSource = App.Manager.GetChannels
If lstItems.SelectedIndex = -1 Then
lstItems.SelectedIndex = 0
End If
Dim lbi As ListBoxItem = lstItems.ItemContainerGenerator.ContainerFromItem(lstItems.SelectedItem)
Das allein geht noch nicht. Wenn ich nun in XAML die Listbox so deklariere:
<ListBox Margin="20 0 0 0" Name="lstItems" ItemTemplate="{StaticResource ChannelTemplate}" Style="{StaticResource RightListStyle}" ItemContainerStyle="{StaticResource RightListItemStyle}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.GroupStyle>
<GroupStyle>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
gehts plötzlich. Die GroupStyle sind entscheidend. Keine Ahnung warum, hauptsache es geht.
Gruß Thorsten