Domanda

Ho usato il seguente modello nel mio progetto:

<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>

Ho usato questo modello per creare una matrice modificabile per l'utente. L'utente è in grado di navigare da una cella all'altra all'interno della matrice e vorrei evidenziare i dati nella casella di testo selezionata ma non funziona. Ho chiamato TextBox.Focus () e TextBox.SelectAll () per ottenere l'effetto ma niente. Focus () funziona ma il testo non viene mai evidenziato.

Qualsiasi aiuto è il benvenuto e apprezzato.

È stato utile?

Soluzione

Va ??bene, se qualcuno è interessato, la soluzione a questo mio problema era di includere l'istruzione e.Handled = true; nel metodo del gestore eventi in cui textBox.SelectAll () e textBox.Focus () sono chiamati.

Il problema era che avevo collegato un gestore di eventi all'evento PreviewKeyDown della casella di testo che gestisce un evento di tunneling e probabilmente SelectAll () e Focus () < Le chiamate / code> vengono ignorate senza chiamare l'istruzione e.Handled = true; .

Spero che possa aiutare qualcuno.

Altri suggerimenti

Senza il resto del codice è difficile dire se questo funzionerà per te, ma ho messo insieme un piccolo campione usando il tuo DataTemplate (meno le parti che si riferiscono al codice che non è stato pubblicato).

Sono stato in grado di selezionare tutto il testo nelle caselle di testo aggiungendo un gestore di eventi GotFocus a TextBox in DataTemplate:

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

E il code-behind:

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

Fammi sapere se stai tentando di selezionare tutto in circostanze diverse (non quando la casella riceve lo stato attivo).

Ecco un'ottima soluzione molto semplice (non so se funziona per il tuo modello, ma provalo): http://social.msdn.microsoft.com/forums/en-US/wpf/thread/564b5731-af8a-49bf -b297-6d179615819f

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top