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