2012-10-04 6 views
10

Powiel możliwe:
Any way to make a WPF textblock selectable?Jak mogę dokonać TextBlock jako wybierane tak, że użytkownik może skopiować jego tekst

mogę zrobić selekcyjny textblock w aplikacji WPF, dzięki czemu użytkownik może skopiować to.

Z góry dziękuję.

DJ

+0

Ach, Cholera, Jay Riggs ma rację ... Powinienem się zastanowić przed ponownym sprawdzeniem. +1 –

+0

Na to pytanie nie można udzielić odpowiedzi błędnej z ponad 20 głosami oddanymi przez podanego linku. Głosowałem za ponownym otwarciem tego pytania. Nie ma sensu, że ma więcej lat. –

+0

Znalazłem lepsze rozwiązanie. Proszę sprawdzić moją odpowiedź tutaj: https://stackoverflow.com/a/45627524/332528 – torvin

Odpowiedz

11

Można po prostu zrobić je w pole tekstowe, które jest tylko do odczytu, który właśnie wygląda TextBlock, rodzaj takich jak;

<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 byłoby w TextBox domyślnie, można zastąpić przez ContentPresenter zamiast jeśli chcesz również.

Następnie wprowadź w życie;

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

Mam nadzieję, że to pomoże!

ADDENDUM: Jak @doodleus wskazał w komentarzach. Konieczne może być powiązanie szablonu Właściwości zawartości w szablonie. Ponieważ "ContentElement" to nazwa o nazwie część kontrolki TextBox Silverlight. Jedną z niewielkich różnic niuansowych, którą należy obserwować w różnych wariantach Xamla. Nie mogłem zwracać uwagi na znaczniki, gdy początkowo tworzyłem przykład. Tak mu się podoba, że ​​mnie poprawił.

+0

tak to działa dla mnie. dzięki .. –

+2

możesz także wrzucić kartę Tab w tym przypadku :) –

+1

jeden brakujący klucz jest następującym atrybutem w scrollviewerze: Content = "{TemplateBinding Text}". bez tego tekst w polu tekstowym nie będzie widoczny. – doodlleus

Powiązane problemy