No estoy seguro de cuál debe ser seguramente uno de los requisitos más comunes de WPF. He leído this question pero mi implementación de la solución no funciona.Configuración del enfoque en un control dentro de una plantilla de control (Parte 2)
Aquí es el margen de beneficio para el control lookless:
<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>
Aquí está el marcado de la ventana que contiene una instancia de la CustomControl:
<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>
Y aquí está el código subyacente:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Loaded += (RoutedEventHandler)delegate { CCtl.Focus(); };
}
}
Cuando se carga Window1, el cuadro de texto se vuelve verde (lo que indica que ger funciona) pero el foco permanece con CCtl y no con el cuadro de texto. Sin duda, esto tiene que ver con la salida que muestra el siguiente error de datos:
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').
tengo ni idea de por qué este error está apareciendo. Cualquier sugerencia recibida con gratitud, gracias.
Sí, eso es todo, muchas gracias. –