4

プロジェクトで次のテンプレートを使用しました。

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

このテンプレートを使用して、ユーザーの編集可能なマトリックスを作成しました。ユーザーはマトリックス内のセル間を移動できます。選択したテキストボックスのデータを強調表示したいのですが、機能しません。効果を実現するためにTextBox.Focus()とTextBox.SelectAll()を呼び出しましたが、何もしませんでした。フォーカス()は機能しますが、テキストが強調表示されることはありません。

どんな助けでも大歓迎です。

4

3 に答える 3

14

さて、誰かが興味を持っているなら、私のこの問題の解決策は、とが呼び出されるe.Handled = true;イベントハンドラーメソッドにステートメントを含めることでした。textBox.SelectAll()textBox.Focus()

PreviewKeyDown問題は、トンネリングイベントを処理するテキストボックスのイベントにイベントハンドラーをアタッチしたことでした。おそらく、ステートメントを呼び出さずにSelectAll()andFocus()呼び出しが無視されます。e.Handled = true;

それが誰かを助けることを願っています。

于 2010-02-23T12:43:43.393 に答える
0

残りのコードがないと、これがうまくいくかどうかを判断するのは難しいですが、DataTemplateを使用して小さなサンプルをまとめました(投稿されなかったコードを参照する部分を除く)。

DataTemplateのTextBoxにGotFocusイベントハンドラーを追加することで、テキストボックス内のすべてのテキストを選択できました。

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

そして、コードビハインド:

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

さまざまな状況ですべてを選択しようとしている場合はお知らせください(ボックスがフォーカスされたときではありません)。

于 2009-12-03T18:55:26.620 に答える
-1

これは非常に優れた非常に単純な解決策です(テンプレートで機能するかどうかはわかりませんが、試してみてください): http ://social.msdn.microsoft.com/forums/en-US/wpf/thread/564b5731 -af8a-49bf-b297-6d179615819f

于 2013-05-02T00:23:00.143 に答える