Ich bin ratlos auf, was sicherlich einer der häufigsten WPF-Anforderungen sein muss. Ich habe this question gelesen, aber meine Implementierung der Lösung funktioniert nicht.Einstellung Fokus auf eine Steuerung innerhalb einer ControlTemplate (Teil 2)
Hier ist das Markup für das lookless Kontrolle:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTest">
<Style TargetType="{x:Type local:CustomControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl}">
<Border>
<TextBox x:Name="myTextBox" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused"
Value="True">
<Setter Property="FocusManager.FocusedElement"
Value="{Binding ElementName=myTextBox}" />
<Setter TargetName="myTextBox"
Property="Background"
Value="Green" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Hier ist das Markup für das Fenster, die eine Instanz des Custom enthält:
<Window x:Class="WpfTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTest"
Title="Window1" Height="300" Width="300">
<local:CustomControl x:Name="CCtl" />
</Window>
Und hier ist der Code-Behind:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Loaded += (RoutedEventHandler)delegate { CCtl.Focus(); };
}
}
Wenn Window1 geladen ist, wird das Textfeld grün (zeigt an, dass die trig Ger funktioniert), aber der Fokus bleibt bei CCtl und nicht bei der Textbox. Ohne Zweifel hat das mit dem Ausgang zu tun, um die folgenden Datenfehler anzeigt:
Cannot find source for binding with reference 'ElementName=myTextBox'. BindingExpression:(no path); DataItem=null; target element is 'CustomControl' (Name='CCtl'); target property is 'FocusedElement' (type 'IInputElement').
Ich habe keine Ahnung, warum dieser Fehler erscheint, wird. Alle Hinweise dankbar erhalten, danke.
Ja, das ist es - vielen Dank. –