2011-07-29 9 views
10

Mam jedną blokadę tekstu o szerokości 100. Gdy długość tekstu jest duża, chcę pokazać znaki, które są umieszczone w tym bloku tekstowym i (.. .) obok tekstu, aby określić użytkownika, że ​​jest tam również więcej tekstu. Po kliknięciu tego przycisku (...) pełny tekst zostanie wyświetlony w osobnym wyskakującym okienku.Pokaż przycisk wielokropka (...), gdy tekst przekracza zakres WPF

Chcę, aby przycisk dynamiczny (...) był wyświetlany, gdy długość tekstu przekroczy rozmiar bloku tekstu. Proszę odpowiedzieć

Odpowiedz

1

Wierzę, że chcesz ustawić TextTrimming property. Settng to WordElilipsis lub CharacterEllipsis powinien zapewnić to, czego potrzebujesz.

10

To nie jest dokładnie to, co chcesz, ale to podobny pomysł i po prostu wykorzystuje pieczony w treści:

<TextBlock MaxWidth="200" 
      Text="{Binding YourLongText}" 
      TextTrimming="WordEllipsis" 
      ToolTip="{Binding YourLongText}" /> 

więc masz TextBlock o maksymalnej szerokości, a gdy tekst może” t fit to wyświetla elipsę ("..."). Najechanie kursorem myszy na blok TextBlock spowoduje wyświetlenie pełnego tekstu w Etykiecie narzędzi.

+0

Dzięki Matt za odpowiedź. Ale chcę wyświetlać przycisk automatycznie po przekroczeniu długości tekstu. W TextTrimming ... pojawia się, ale chcę, aby pojawił się przycisk z treścią ... –

2

Wystarczy poczuć ten sam wymóg dodawania wielokropek na przycisk tak dodaniu roztworu tutaj

<Style x:Key="editButton" TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="Transparent" />       
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border Background="{TemplateBinding Background}"> 
          <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center" > 
           <ContentPresenter.Resources> 
            <Style TargetType="TextBlock"> 
             <Setter Property="TextTrimming" Value="CharacterEllipsis"></Setter> 
            </Style> 
           </ContentPresenter.Resources> 
          </ContentPresenter> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Transparent"/>      
       </Trigger> 
      </Style.Triggers> 
     </Style> 

zauważy zasobów w zawartości prezentera.

+0

Dla innych takich jak ja: używaj ContentPresenter, a nie ContentControl. – Vimes

Powiązane problemy