Hallo Community,
ich versuche gerade eine Art InlineEditor zu bauen. In einem Template
für ein ListBoxItem
habe ich ein ContentControl
das per Trigger zwischen einem TextBlock
und einer TextBox
für eine string
Property wechselt:
<ContentControl x:Name="nameContent" Style="{StaticResource DefaultContentControlStyle}" DataContext="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext}" Grid.Column="3" Template="{StaticResource ShowNameTemplate}">
<xamlBehaviours:Interaction.Triggers>
<xamlBehaviours:EventTrigger EventName="MouseDown" SourceObject="{Binding ElementName=nameContent}">
<xamlBehaviours:ChangePropertyAction TargetObject="{Binding ElementName=nameContent}" PropertyName="Template" Value="{StaticResource EditNameTemplate}"/>
</xamlBehaviours:EventTrigger>
<xamlBehaviours:DataTrigger Value="False" Comparison="Equal" Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}">
<xamlBehaviours:ChangePropertyAction TargetObject="{Binding ElementName=nameContent}" PropertyName="Template" Value="{StaticResource ShowNameTemplate}" />
</xamlBehaviours:DataTrigger>
</xamlBehaviours:Interaction.Triggers>
</ContentControl>
Das funktioniert soweit auch gut. Was noch nicht funktioniert ist das Setzen des Fokus wenn die TextBox
aktiviert wird. Durch das MouseDown
wird ja ein Fokus gesetzt, scheinbar kann ich nicht gleichzeitig wenn die TextBox
geladen wird den Fokus erneut setzen, dass hatte ich mit einem weiteren Trigger versucht:
TextBox.Loaded
TextBox.IsVisible
dann den Fokus zu setzen durch:
FocusManager.FocusElement
der TextBox
TextBox.Focus
call.Vielleicht hat ja jemand noch eine Idee.
Grüße
Mit freundlichen Grüßen
lutzeslife
Evtl. mit einem Attached Property, wie in der Antwort von Set Focus for TextBox in Style Trigger?
Super danke, auf die Idee bin ich gar nicht gekommen 🤦♂️, das funktioniert prima.
Mit freundlichen Grüßen
lutzeslife