W mojej aplikacji WPF chcę, aby element menu miał pole tekstowe. Udało mi się to zrobić za pomocą następującego kodu:WPF TextBox MenuItem traci ostrość podczas przenoszenia myszy
<Menu Height="23" HorizontalAlignment="Stretch" Name="MainMenu" VerticalAlignment="Top">
<MenuItem Header="File">
<MenuItem Header="Exit" Click="menuItemExit_Click" />
</MenuItem>
<MenuItem Header="Settings">
<MenuItem Header="Some setting" IsCheckable="True" />
<Separator />
<MenuItem>
<MenuItem.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Content="Some value:" Margin="0,3,6,0" Padding="0" />
<TextBox Margin="0,0,0,6" Grid.Column="1" />
</Grid>
</MenuItem.Header>
</MenuItem>
</MenuItem>
</Menu>
Ten kod wyświetla menu jak się spodziewałem, ale jeśli zacznę wpisywać jakąś wartość w polu tekstowym, a następnie przesuń mysz (nie klikając) od element menu pola tekstowego, pole tekstowe traci ostrość i nie mogę kontynuować pisania, dopóki nie kliknę pola tekstowego ponownie. Jak mogę osiągnąć takie samo zachowanie, jak element menu tekstowego w WinForms? Oznacza to, że pole tekstowe traci ostrość tylko wtedy, gdy użytkownik kliknie poza polem tekstowym lub dotknie klawisza tabulatora.
Z góry dziękuję.
To naprawiło mój problem, wielkie dzięki! – dbostream
Nie ma za co! :-) – rhe1980
Jeśli masz więcej niż jeden w tym samym menu, pomaga ustawić e.Handled tylko wtedy, gdy (e.NewFocus jest MenuItem). W ten sposób nadal możesz kliknąć na inny TextBox w tym samym Menu. –