内のコントロールにフォーカスを設定する私は、次のControlTemplateがありますWPFは、コントロールテンプレート
<ControlTemplate TargetType="dxe:TextEdit" x:Key="TextEditMultiStyle">
<Border x:Name="border" BorderBrush="#054c74" BorderThickness="1" CornerRadius="1">
<Border.Effect>
<DropShadowEffect ShadowDepth="0" Color="#0980c2" Opacity="1" BlurRadius="5" />
</Border.Effect>
<dxe:TextEdit x:Name="textEdit" TextWrapping="Wrap" AcceptsReturn="True" Text="{TemplateBinding Text}" BorderThickness="0"
EditValue="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=EditValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
VerticalContentAlignment="Top"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textEdit}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
を私は私の窓にテキストボックスを追加し、今ときに、ウィンドウの負荷それにフォーカスを設定したいしています。これまでのところ何も働いていなかったし、ControlTemplate内のTextEditに焦点を合わせる必要があるからだと私は信じている。それはトリガーがやっていることです。
残念ながら、私はトリガーとして指定する必要があることを解決できません。上記のコードは、実行時の苦情を通知するだけです。
System.Windows.Dataエラー:4: 'ElementName = textEdit'という参照でバインド元が見つかりません。 BindingExpression:(パスなし); DataItem = null;ターゲット要素は 'TextEdit'(Name = 'MarkerTextEdit')です。私は、ウィンドウのFocusManagerに設定する必要があると思うので、トリガーが正しいFocusManagerのプロパティを設定するとは確信していません。
(擬似コード) FindAncestor(ウィンドウ).FocusManager.FocusedElement = ControlTemplate.Controls( 'テキストエディット')それはどんな意味がある場合
:
は、だから、私はと同等のものが必要だと思います。私がしたいのは、ウィンドウが読み込まれたときにTextBoxにフォーカスが移動されるためです。 WinFormsではばかげて簡単ですが、WPFではロケット科学のようです。
アップデート:私は、次のコードビハインドとしての私の理論を確認したと思う作品:ソリューションはにトリガを変更することです
private void MarkerEditorWindow_Loaded(object sender, RoutedEventArgs e)
{
var control = (UIElement)MarkerTextEdit.Template.FindName("textEdit", MarkerTextEdit);
control.Focus();
}