TextBox在wpf中只读"双击和丢失焦点事件"之间的"开/关"

sha*_*eed 6 wpf textbox wpf-controls wpf-4.0

我有一个像xaml一样的控件,只读启用.

          <TextBox  Text="{Binding Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap" >   
Run Code Online (Sandbox Code Playgroud)

现在,当我双击此文本框时,我应该能够输入文本.Readonly属性应该变为false

如果我移动到窗口中除此文本框之外的其他项目,则文本框应再次变为只读.

我试图用触发器来做.但没有得到正确的提示.有人能帮我一下吗 ?

Lai*_*290 4

您可以通过两个事件来实现这一点:MouseDoubleClick 和 LostFocus

<Grid>
    <TextBox IsReadOnly="True"
             MouseDoubleClick="TextBox_MouseDoubleClick"
             LostFocus="TextBox_LostFocus"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

在你的程序代码中:

private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    TextBox textBox = sender as TextBox;
    textBox.IsReadOnly = false;
    //textBox.CaretIndex = textBox.Text.Count();
    textBox.SelectAll();
}

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
    TextBox textBox = sender as TextBox;
    textBox.IsReadOnly = true;
}
Run Code Online (Sandbox Code Playgroud)