Oto technika, której często używam. Opiera się on na powyższym przykładzie dodawania atrybutu FocusedElement
do twojego Window
lub UserControl
.
Moja umowa jest taka, że nie chcę, aby KAŻDA z kontrolek w moim oknie miała fokus. Rozwiązaniem dla mnie jest stworzenie kontrolki fikcyjnej, która nie ma interfejsu użytkownika i przypisuje do niej ostrość. Tak się składa, że Control
doskonale pasuje do tej roli:
<UserControl
x:Class="MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FocusManager.FocusedElement="{Binding ElementName=focus_thief}"
mc:Ignorable="d">
<Grid>
<!-- no renderable UI -->
<Control Name="focus_thief"/>
<!-- wants focus, but won't get it -->
<ListBox>
<ListBoxItem>First Item</ListBoxItem>
</ListBox>
</Grid>
</UserControl>
Myślę, że u oznaczało, że gdy u przenieść fokus do pola listy, 1. pozycja jest zawsze wybrany? (podświetlone ... i jeśli naciśniesz, drugi element dostaje fokus?) –
1) dla tego, który zaznaczył moje pytanie jako duplikat, nie zrozumiałeś pytania, ja też jestem tym, który wysłał duplikat. 2) @Madi, Kiedy listbox jest renderowany, jego pierwszy element jest wybierany automatycznie, chcę wyłączyć tę funkcję. – Shimmy
hmm .. możesz użyć FocusManagera, aby skupić się na konkretnym przedmiocie/elemencie .. (wszystko w Xaml) ...jednak nie mogę wymyślić, jak skupić się na niczym: D –