无法在弹出窗口内的WPF文本框中选择文本

无法在弹出窗口内的WPF文本框中选择文本,wpf,select,textbox,popup,Wpf,Select,Textbox,Popup,我试图在状态信息弹出窗口中设置一个多行文本框,以显示只读、多行、可滚动的信息。下面的XAML除了文本是不可选择的(因此用户可以复制)之外,其他都可以正常工作 在弹出窗口中托管文本框是否会禁用文本选择,或者我的绑定是否存在问题?我正在替换一个文本框,该文本框位于一个可选择文本的模式窗口中 更新:这发生在.NET 3.5应用程序中,WPF托管在Win Forms容器中。您的控件在什么时候实例化-在winforms控件的构造函数中还是稍后?也许您可以尝试加载或创建控件 这听起来有点像ElementHo

我试图在状态信息弹出窗口中设置一个多行文本框,以显示只读、多行、可滚动的信息。下面的XAML除了文本是不可选择的(因此用户可以复制)之外,其他都可以正常工作

在弹出窗口中托管文本框是否会禁用文本选择,或者我的绑定是否存在问题?我正在替换一个文本框,该文本框位于一个可选择文本的模式窗口中


更新:这发生在.NET 3.5应用程序中,WPF托管在Win Forms容器中。

您的控件在什么时候实例化-在winforms控件的构造函数中还是稍后?也许您可以尝试加载或创建控件

这听起来有点像ElementHost.EnableModelesKeyBoardInTerop未被调用时发生的情况,但它不能通过弹出窗口调用


解决方法可能是添加“复制”按钮

您的控件在什么时候实例化-在winforms控件的构造函数中还是稍后?也许您可以尝试加载或创建控件

这听起来有点像ElementHost.EnableModelesKeyBoardInTerop未被调用时发生的情况,但它不能通过弹出窗口调用


解决方法可能是添加“复制”按钮

我使用WPF 4将此代码粘贴到项目中,并且可以在文本框中选择文本。这发生在.NET 3.5项目中,WPF托管在Win Forms容器中。@Zamboni:感谢您在WPF 4中尝试此功能。它缩小了问题的范围。它在独立的3.5WPF项目中工作吗?我想知道它是否与winforms容器有关。它在3.5SP1独立项目中运行良好@Tom,你可能是对的。我使用WPF 4将此代码粘贴到一个项目中,可以在文本框中选择文本。这发生在.NET 3.5项目中,WPF托管在Win Forms容器中。@Zamboni:感谢您在WPF 4中尝试。它缩小了问题的范围。它在独立的3.5WPF项目中工作吗?我想知道它是否与winforms容器有关。它在3.5SP1独立项目中运行良好@汤姆,你可能走对了。
<!-- 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);
        }
    }