Frage

habe ich die folgende Vorlage in meinem Projekt verwendet:

<DataTemplate 
    x:Key="textBoxDataTemplate">
    <TextBox 
        Name="textBox"
        ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"
        Tag="{Binding}"
        PreviewKeyDown="cellValueTextBoxKeyDown">
        <TextBox.Text>
            <MultiBinding
                Converter="{StaticResource intToStringMultiConverter}">
                <Binding 
                    Path="CellValue"
                    Mode="TwoWay">
                        <Binding.ValidationRules>
                            <y:MatrixCellValueRule 
                                MaxValue="200" />
                        </Binding.ValidationRules>
                </Binding>
                <Binding 
                    RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type y:MatrixGrid}}" 
                    Path="Tag"
                    Mode="OneWay" />
            </MultiBinding>
        </TextBox.Text>
    </TextBox>
</DataTemplate>

habe ich diese Vorlage eine editierbare Matrix für den Benutzer zu erstellen. Der Benutzer kann von Zelle zu Zelle in der Matrix navigieren, und ich mochte die Daten in dem ausgewählten Textfeld markieren, aber es funktioniert nicht. Ich rief TextBox.Focus () und TextBox.SelectAll (), um die Wirkung aber nichts zu erreichen. Der Focus () funktioniert, aber der Text wird nie hervorgehoben.

Jede Hilfe ist willkommen und geschätzt.

War es hilfreich?

Lösung

Okay, wenn jemand interessiert ist, war die Lösung für dieses Problem von mir die Anweisung e.Handled = true; in der Event-Handler-Methode umfasst, in denen die textBox.SelectAll() und textBox.Focus() genannt werden.

Das Problem war, dass ich einen Event-Handler an der PreviewKeyDown Veranstaltung Textbox, die ein Tunnel-Ereignis behandelt und wahrscheinlich auch die SelectAll() und Focus() Anrufe ohne den Aufruf der e.Handled = true; Anweisung ignoriert.

Hoffe, es wird jemand helfen.

Andere Tipps

Ohne den Rest des Codes ist es schwierig zu sagen, ob dies für Sie arbeiten, aber ich zusammen eine kleine Probe mit Ihrem Datatemplate (minus die Teile, die auf Code verweisen, die nicht geschrieben wurde).

Ich konnte den ganzen Text in den Textfeldern auswählen, indem Sie einen GotFocus-Ereignishandler zu dem Text in der Datatemplate und fügte hinzu:

<TextBox 
    ...
    GotFocus="textBox_GotFocus"
    ...>
...
</TextBox>

Und das Code-behind:

    private void textBox_GotFocus(object sender, RoutedEventArgs e)
    {
        TextBox textBox = sender as TextBox;
        if (textBox != null)
        {
            textBox.SelectAll();
        }
    }

Lassen Sie mich wissen, wenn Sie versuchen, alle unter verschiedenen Umständen zu wählen (nicht, wenn das Feld den Fokus erhält).

Hier ist eine sehr gut sehr einfache Lösung (ich weiß nicht, ob es für die Vorlage funktioniert, aber probieren Sie es aus): http://social.msdn.microsoft.com/forums/en-US/wpf/thread/564b5731-af8a-49bf -b297-6d179615819f

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top