Простое окно только с меткой и настраиваемым элементом управления. Когда Path=ValueContainer
включен и используется клавиша доступа, он издает звук уведомления windows, но фокус не помещается в текстовое поле. Использование F12 (Go To Definition) работает и обеспечивает переход к TextBox.
Если Path=ValueContainer
опущено, звук не воспроизводится и фокус не изменяется.
<Window x:Class="DebuggingSearchBoxAccessKey.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DebuggingAccessKey"
Title="MainWindow" Height="200" Width="200">
<StackPanel Orientation="Horizontal">
<Label Content="_Testing"
Target="{Binding ElementName=searchBox, Path=ValueContainer}" />
<local:SearchBox x:Name="searchBox" />
</StackPanel>
</Window>
Пользовательский элемент управления содержащий TextBox
Я хочу привязать ключ доступа к.
<UserControl x:Class="DebuggingAccessKey.SearchBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:local="clr-namespace:DebuggingAccessKey"
mc:Ignorable="d"
d:DesignHeight="20" d:DesignWidth="100">
<Grid>
<TextBox x:Name="ValueContainer"
Text="Bazzle"/>
</Grid>
</UserControl>
Я также реализовал свойство Text
, насколько я понимаю, как DependencyProperty
.
public partial class SearchBox : UserControl
{
public SearchBox()
{
InitializeComponent();
}
public static readonly DependencyProperty TextDependencyProperty = DependencyProperty.Register(nameof(Text), typeof(string), typeof(SearchBox));
public string Text
{
get => (string)GetValue(TextDependencyProperty);
set => SetValue(TextDependencyProperty, value);
}
}
Привязка к стандартному текстовому полю работает, как показано ниже. Таким образом, я предполагаю, что мне не хватает очевидного, что нужно для настраиваемого элемента управления ...
<StackPanel Orientation="Horizontal">
<Label Content="_Foo" Target="{Binding ElementName=bar}" />
<TextBox x:Name="bar" />
</StackPanel>