wpftextboxwpf-controlswpf-4.0

TextBox readonly "on/off" between "double click and lost focus events" in wpf


I have a control like below xaml with Read only enabled.

          <TextBox  Text="{Binding Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap" >   

Now when i double click this text box , i should be able to enter a text. Readonly property should become false

If I move to another item in the window other than this text box , then the text box should become readonly again.

I am trying to do it with Triggers. but not getting the right hint . Can anyone help me here ?


Solution

  • You can make this with 2 events, MouseDoubleClick and LostFocus

    <Grid>
        <TextBox IsReadOnly="True"
                 MouseDoubleClick="TextBox_MouseDoubleClick"
                 LostFocus="TextBox_LostFocus"/>
    </Grid>
    

    In you procedural code:

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