2011-02-07 16 views
2

ステータス情報ポップアップに複数行TextBoxをホストして、複数行のスクロール可能な読み取り専用情報を表示しようとしています。次のXAMLはすべて有効ですが、は選択できません(ユーザーがコピーできるように)。ポップアップ内のWPF TextBoxでテキストを選択できません

<!-- 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を置き換えています。

更新:これは、Winフォームコンテナ内でWPFがホストされている.NET 3.5アプリケーションで発生しています。

+1

...「コピー」ボタンを追加することができ、私はWPF 4を使用して、プロジェクトにこのコードを貼り付けて、私はテキストボックス内のテキストを選択することができます。 – Zamboni

+0

これは、WPFがWinフォームコンテナ内でホストされている.NET 3.5プロジェクトで発生します。 – bruceboughton

+0

@ザンボニ:WPF 4で試していただきありがとうございます。問題を少し絞り込んでいます。 – bruceboughton

答えて

0

コントロールはどの時点でインスタンス化されていますか?winformsコントロールのコンストラクタまたは後でいつですか?たぶんあなたは、LoadedまたはControlCreatedを試すことができます。

ElementHost.EnableModelessKeyboardInteropが呼び出されていないときに起こっているように聞こえるが、ポップアップでは呼び出せない。

この問題を回避するには、

関連する問題