2009-03-10 15 views
12

Bugün zor zamanlar geçiriyor gibi görünüyor. Tüm yapmak istediğim, barındırılan Pencereye bir bool değer veribounduna bağlı olarak görünebilen bir görünmesidir.Metin kutusu nasıl yapılır Görünürlük = Bir tetikleyici ile gizlenmiş

Sadece derlemeyeceğim ve neden anlamıyorum. Lütfen yardım et.

<TextBlock Grid.Column="2" Text="This order will be sent to accounting for approval" 
      Foreground="Red" VerticalAlignment="Center" FontWeight="Bold" Padding="5"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=AllowedToSubmit}" Value="True"> 
        <Setter Property="Visibility" Value="Hidden" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

cevap

19

Bunu Visibility özelliğini tanıması için sırayla Style.TargetType ayarlamanız gerekir:

AllowedToSubmit Senin bağlama yolu muhtemelen, Window 'ın adının ElementName set olması gerekir
<TextBlock Grid.Column="2" VerticalAlignment="Center" FontWeight="Bold" Foreground="Red" Padding="5" Text="This order will be sent to accounting for approval"> 
    <TextBlock.Style> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=AllowedToSubmit}" Value="True"> 
        <Setter Property="Visibility" Value="Hidden"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

iyi.

+0

mutlaka Değil - o ağacın daha yukarı bir DataContext'i ayarlamış olabilir ve AllowedToSubmit bu nesne üzerinde bir özelliktir. – Andy

+0

Andy ile anlaştı. Russ MVVM kullanıyorsa, muhtemelen bağlamayı çözmek için bir DataContext var. – Adrian

+0

MVVM. ElementName değerini ayarlamanıza gerek yok. İpucu için teşekkürler. WPF'de benim winforms yıllarım oldukça değersizdir. :) – Russ

8

Diğer bir seçenek doğrudan özelliğine TextBlock.Visibility bağlamak şudur: Doğru TextBlock gizler sizin numune gibi çalışmak istiyorsanız

<Window> 
    <Window.Resources> 
     <BooleanToVisibilityConverter x:Key="BoolToVisibility" /> 
    </Window.Resources> 
    <TextBlock Visibility="{Binding Path=AllowedToSubmit, Converter={StaticResource BoolToVisibility}}" /> 
</Window> 

, sonra tam tersini dönüştürmek için kendi dönüştürücü yazabilirsiniz dahili BooleanToVisibilityConverter.

+0

Bu, MVVM kullanarak WPF'de görünürlüğü ayarlamanın en yaygın yoludur. +1 –