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() 来达到效果但是什么都没有。Focus () 有效,但文本永远不会突出显示。

欢迎和赞赏任何帮助。

4

3 回答 3

14

好的,如果有人感兴趣,我的这个问题的解决方案是将语句包含在调用ande.Handled = true;的事件处理程序方法中。textBox.SelectAll()textBox.Focus()

问题是我将一个事件处理程序附加到PreviewKeyDown处理隧道事件的文本框事件上,并且可能会忽略SelectAll()andFocus()调用而不调用该e.Handled = true;语句。

希望它会帮助某人。

于 2010-02-23T12:43:43.393 回答
0

如果没有您的其余代码,很难说这是否适合您,但我使用您的 DataTemplate 整理了一个小示例(减去引用未发布的代码的部分)。

通过将 GotFocus 事件处理程序添加到 DataTemplate 中的 TextBox,我能够选择文本框中的所有文本:

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