11

重複の可能性:
WPF テキストブロックを選択可能にする方法はありますか?

ユーザーがコピーできるように、WPF アプリケーションでテキストブロックを選択可能にすることはできますか?

前もって感謝します。

DJ

4

1 に答える 1

12

読み取り専用のTextBoxにすることができます。これは、TextBlockのように見えます。

<Style x:Key="ReadOnlyTextBox" TargetType="TextBox">
   <Setter Property="IsReadOnly" Value="True" />
   <Setter Property="Padding" Value="5"/>
   <Setter Property="Margin" Value="0"/>
   <Setter Property="Background" Value="Transparent"/>
   <Setter Property="BorderBrush" Value="Transparent"/>
   <Setter Property="BorderThickness" Value="0"/>
   <Setter Property="IsTabStop" Value="False"/>
   <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
   <Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
   <Setter Property="Template">
      <Setter.Value>
         <ControlTemplate TargetType="TextBox">
            <Grid x:Name="RootElement">
               <ScrollViewer x:Name="ContentElement"
                             Margin="{TemplateBinding Margin}"
                             Background="{TemplateBinding Background}"
                             BorderBrush="{TemplateBinding BorderBrush}"
                             BorderThickness="{TemplateBinding BorderThickness}"
                             IsTabStop="{TemplateBinding IsTabStop}"
                             Padding="{TemplateBinding Padding}" 
                             HorizontalScrollBarVisibility="{TemplateBinding HorizontalScrollBarVisibility}"
                             VerticalScrollBarVisibility="{TemplateBinding VerticalScrollBarVisibility}"/>
            </Grid>
         </ControlTemplate>
      </Setter.Value>
   </Setter>
</Style>

ScrollViewer ContentElementはデフォルトでTextBoxにありますが、必要に応じて代わりにContentPresenterの代わりに使用することもできます。

次に、それを有効にします。

<TextBox Text="Blah Blah Blah you can copy me!" Style="{StaticResource ReadOnlyTextBox}"/>

お役に立てれば!

補遺: @doodleusがコメントで指摘したように。テンプレート内のコンテンツプロパティをバインドするテンプレートが必要になる場合があります。「ContentElement」はSilverlightTextBoxコントロールの名前付き部分です。さまざまなxamlバリアントで注意すべき微妙なニュアンスの違いの1つ。最初に例を作成したとき、タグに注意を払っていなかったに違いありません。だから私を訂正してくれた彼に称賛を送ります。

于 2012-10-04T04:14:48.627 に答える