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 MouseDownwird 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.LoadedTextBox.IsVisibledann den Fokus zu setzen durch:
FocusManager.FocusElement der TextBoxTextBox.Focuscall.Vielleicht hat ja jemand noch eine Idee.
Grüße
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.