8
votes

Comment ajouter un accent à une combinaison modifiable dans WPF

J'utilise une combinaison modifiable dans WPF, mais lorsque j'essaie de définir la mise au point du code C #, il ne fait que montrer la sélection. Mais je veux aller pour l'option Modifier (le curseur doit afficher pour la saisie de l'utilisateur).


1 commentaires

Pourrait donner un exemple de votre code? PS: Je ne t'ai pas répondu.


4 Réponses :


3
votes

Vous pouvez essayer de dériver de comboBox et accéder à la zone de texte interne, comme ceci: xxx pré>

dans votre code, vous l'utiliseriez comme ceci: P>

<Window x:Class="EditableCbox.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:EditableCbox"
    Title="Window1" Height="300" Width="300">
    ...
        <local:MyComboBox x:Name="myComboBox" IsEditable="True" Grid.Row="0" Margin="4">
            <ComboBoxItem>Alpha</ComboBoxItem>
            <ComboBoxItem>Beta</ComboBoxItem>
            <ComboBoxItem>Gamma</ComboBoxItem>
        </local:MyComboBox>
    ...
</Window>


0 commentaires

10
votes

Vous pouvez essayer ce code:

        var textBox = (comboBox.Template.FindName("PART_EditableTextBox", comboBox) as TextBox);
        if (textBox != null)
        {
            textBox.Focus();
            textBox.SelectionStart = textBox.Text.Length;
        }


2 commentaires

@Rajk que le code a fonctionné parfaitement pour moi. Il résout correctement le problème de l'accent sur une combinaison modifiable lorsqu'une fenêtre est d'abord affichée. Ce qui n'est pas indiqué clairement, c'est que vous devez mettre le code dans l'événement chargé de la fenêtre contenant la combinaison modifiable.


Parfait! Résolu des lots et beaucoup de problèmes! Merci beaucoup!



6
votes

Basé sur la réponse de l'utilisateur128300 ci-dessus, j'ai proposé une solution légèrement plus simple. Dans le constructeur ou contextchangedHandler, le code attend que la commande soit chargée avant de mettre l'accent sur l'élément UI xxx

puis dans la mise au point même du gestionnaire, je sélectionne tout le texte du début à la fin xxx

dans xaml the ComboBox est modifiable. En sélectionnant tout le texte lorsque le type d'utilisateur Tapez une clé de réinitialisation de la valeur précédente xxx


0 commentaires

0
votes

Basé sur la réponse de Rikker Serg, vous pouvez utiliser ce code dans votre constructeur (après initializecomonent) et l'envoyer au lieu de ne pas avoir besoin de créer des contrôles personnalisés ou des gestionnaires d'événements.

public NewMessageWindow()
{
    InitializeComponent();

    Dispatcher.BeginInvoke(new Action(() =>
    {
        var textBox = myComboBox.Template.FindName("PART_EditableTextBox", cbUsers) as TextBox;
        if (textBox != null)
        {
            textBox.Focus();
            textBox.SelectionStart = textBox.Text.Length;
        }
    }));

}


0 commentaires