Jak wyłączyć możliwość kliknięcia w label

0

Chciałbym zrobić Textbox z labelem w środku tak, aby kiedy się coś wpiszę to label znika. Coś takiego jak szukajka w prawym górnym rogu tu na 4p. Jednak mam problem, bo jeśli umieszczę label nad textboxem to nie można kliknąć na tb w miejscu gdzie jest label, trzeba klikać gdzieś dalej. Rozwiązałem to w taki sposób że pierwszy jest label, później tb ze zmniejszonym opacity. Tylko że teraz tb się trochę różni od pozostałych. Zastanawiam się, czy może jest na to lepszy sposób?

<Label Content="Tu wpisz tekst" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5" Visibility="{Binding ElementName=tbSearch, Path=Text, Converter={StaticResource  visibilityConverter}}" />
<TextBox Margin="5" x:Name="tbSearch" Text="{Binding SearchingText, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Stretch" Opacity="0.70" Grid.Column="1"/>

Ok, dobra już nieważne, znalazłem właściwość IsHitTestVisible

0

Po co dawać jedną kontrolkę na drugą. Przecież możesz wstawić napis do TextBoxa i jak ktoś w niego kliknie to czyścić ten napis.

0

Ponieważ chciałem ustawić labelce opacity, a nie wiem czy to da się zrobić w textbox.Text jeśli się da to pewnie nie będzie tak łatwe.

0

Troszkę inaczej czy lepiej nie wiem:

XAML:

   <Window.Resources>
      <wpfApplication:TextConvert x:Key="TextConvert" />
   </Window.Resources>
   <Grid>

      <Label Content="Zniknie kiedy zaczniesz pisać.." Foreground="Blue" Opacity="0.70">
         <Label.Visibility>
            <MultiBinding Converter="{StaticResource TextConvert}">
               <Binding ElementName="TextBox" Path="Text.IsEmpty" />
            </MultiBinding>
         </Label.Visibility>
      </Label>
      <TextBox Name="TextBox" Background="Transparent"/>
   </Grid>

C#:

   public class TextConvert : IMultiValueConverter
   {
      public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
         if (values[0] is bool)
         {
            bool hasText = !(bool)values[0];

            if (hasText)
               return Visibility.Collapsed;
         }
         return Visibility.Visible;
      }

      public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
      {
         throw new NotImplementedException();
      }
   }

1 użytkowników online, w tym zalogowanych: 0, gości: 1