Невозможно выделить текст в WPF TextBox внутри всплывающего окна - PullRequest
2 голосов
/ 07 февраля 2011

Я пытаюсь разместить многострочное TextBox во всплывающем окне информации о состоянии, чтобы показать информацию только для чтения, многострочную, с возможностью прокрутки.Следующий XAML все работает хорошо, за исключением того, что текст недоступен для выбора (поэтому пользователь может его скопировать).

<!-- Status info popup -->
<Popup AllowsTransparency="True" PopupAnimation="Fade" Placement="Center" StaysOpen="False"
       PlacementTarget="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type v:ModuleView}}}" 
       IsOpen="{Binding ShowingStatusInformation}">
    <Border CornerRadius="5">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <TextBlock Text="Status Information"
                       Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" />                        
            <Button Content="OK" IsDefault="True" Command="{Binding ToggleStatusInfoCommand}"
                    HorizontalAlignment="Right" Margin="0 5" Padding="20 3" 
                    Grid.Column="1" Grid.Row="0" VerticalAlignment="Center">
                <Button.CommandParameter><sys:Boolean>False</sys:Boolean></Button.CommandParameter>
            </Button>

            <TextBox IsReadOnly="True" Text="{Binding StatusInformation}" 
                     Margin="6 6 6 3" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1"
                     TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" 
                     MaxHeight="300" />
        </Grid>
    </Border>
</Popup>

Соответствующие свойства в модели представления:

    public string StatusInformation
    {
        get { return _statusInformation; }
        set
        {
            _statusInformation = value;
            _propertyChangedHelper.NotifyPropertyChanged(this, () => StatusInformation);
        }
    }

    public bool ShowingStatusInformation
    {
        get { return _showingStatusInformation; }
        set
        {
            _showingStatusInformation = value;
            _propertyChangedHelper.NotifyPropertyChanged(this, () => ShowingStatusInformation);
        }
    }

Отключает ли выделение текста размещение текстового поля во всплывающем окне, или есть проблема с моим связыванием?Я заменяю TextBox, размещенный в модальном окне, где можно выбрать текст.

Обновление: это происходит в приложении .NET 3.5 с WPF, размещенным в контейнере Win Forms.

1 Ответ

0 голосов
/ 14 февраля 2011

В какой момент создается ваш элемент управления - в конструкторе элемента управления winforms или позже? Может быть, вы можете попробовать Loaded или ControlCreated.

Это немного похоже на то, что происходит, когда ElementHost.EnableModelessKeyboardInterop не был вызван, но его нельзя вызвать с помощью всплывающего окна.

В качестве обходного пути можно добавить кнопку «Копировать» ...

...