Schwerpunkt in WPF DataTemplate
Das Verhalten, die ich Suche, ist, dass eine Auswahl von einem Item in einem ListView-Ergebnisse im Fokus der ersten Isoliertes visualchild.
Problem: datatemplated Daten in einem ItemsControler, die nicht bekommen, einen ersten Schwerpunkt.
Im Beispiel unten gibt es 4 Saiten, die sind dann gefüllt in eine TextBox per Datatemplate.
Beispiel:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<ListView>
<ListView.Resources>
<DataTemplate DataType="{x:Type sys:String}" >
<TextBox Width="100" Text="{Binding Mode=OneWay}"/>
</DataTemplate>
</ListView.Resources>
<ListView.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>test</sys:String>
<sys:String>test</sys:String>
<sys:String>test</sys:String>
<sys:String>test</sys:String>
</x:Array>
</ListView.ItemsSource>
</ListView>
</Grid>
</Window>
Ich habe bereits versucht einige Kombinationen von
FocusManager.FocusedElement="{Binding ElementName=[...]}"
sinnlos zu sagen: ohne Erfolg.
Jemand einen clou wie ich das bekommen konnte was ich will ohne das Durchlaufen des visual tree in c#?
Es sollte möglich sein, dies zu tun, sollte es nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem FocusManager arbeiten süß für diese.
Mithilfe des binding-syntax in C# nicht funktioniert, weil das ist, wie Bindungen in XAML beschrieben. Es könnte funktionieren, um eine neue Instanz erstellen
System.Windows.Data.Binding
, und legen Sie seine Eigenschaften dem entspricht, was Sie im XAML-Code, aber ich bin mir nicht sicher, wasElementName
dass Sie der Lage wäre, zu binden, um diese arbeiten korrekt.Die einzige andere Möglichkeit die ich mir denken kann ist, fügen Sie einen Ereignishandler für das
SelectionChanged
Ereignis, und legen Sie den Fokus manuell ein, aber das klingt nicht so die Lösung, die Sie möchten.Bei einer weiteren Untersuchung, ich glaube nicht, dass eine Verbindliche Lösung möglich ist.
FocusManager.FocusedElement
ist einIInputElement
, die keine Mitglieder im Zusammenhang von Bindung. Ich denke, dass Sie brauchen, um die traverse visual Baum um zu finden, die das erste Objekt, das den Fokus erhalten kann. So etwas wie dies funktionieren sollte: