2009-09-14 9 views
19

इस कोड (ControlType = "ड्रॉपडाउन" तो पृष्ठभूमि पीला जब) काम करता है:मैं DataTrigger में टेक्स्टब्लॉक की दृश्यता को कैसे टॉगल कर सकता हूं?

<Window x:Class="TestCollapsed.Views.MainView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:c="clr-namespace:TestCollapsed.Commands" 
    Title="Main Window" Height="400" Width="800"> 
    <Window.Resources> 
     <Style x:Key="DropDownStyle" TargetType="TextBlock"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ControlType}" Value="dropDown"> 
        <Setter Property="Background" Value="Yellow"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 

    <StackPanel> 
     <TextBlock Visibility="Visible" 
        Text="This is going to be the dropdown control." 
        Style="{StaticResource DropDownStyle}"/> 
    </StackPanel> 
</Window> 

लेकिन इस कोड है काम नहीं (ControlType = "ड्रॉपडाउन" तो TextBlock अभी भी है जब अदृश्य):

<Window x:Class="TestCollapsed.Views.MainView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:c="clr-namespace:TestCollapsed.Commands" 
    Title="Main Window" Height="400" Width="800"> 
    <Window.Resources> 
     <Style x:Key="DropDownStyle" TargetType="TextBlock"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ControlType}" Value="dropDown"> 
        <Setter Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 

    <StackPanel> 
     <TextBlock Visibility="Collapsed" 
        Text="This is going to be the dropdown control." 
        Style="{StaticResource DropDownStyle}"/> 
    </StackPanel> 
</Window> 

क्यों मैं एक शैली में दृश्यता सेट नहीं कर सकता के रूप में मैं पृष्ठभूमि कर सकते हैं?

उत्तर

42

आप टेक्स्टब्लॉक पर दृश्यता सेट कर रहे हैं और फिर इसे शैली के साथ ओवरराइड करने का प्रयास कर रहे हैं। वह काम नहीं करेगा। इसे आज़माएं:

<Window x:Class="TestCollapsed.Views.MainView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:c="clr-namespace:TestCollapsed.Commands" 
    Title="Main Window" Height="400" Width="800"> 
    <Window.Resources> 
     <Style x:Key="DropDownStyle" TargetType="TextBlock"> 
      <Setter Property="Visibility" Value="Collapsed"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ControlType}" Value="dropDown"> 
        <Setter Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 

    <StackPanel> 
     <TextBlock Text="This is going to be the dropdown control." 
        Style="{StaticResource DropDownStyle}"/> 
    </StackPanel> 
</Window> 
+10

मैं था इससे पहले कि यह में डूब इस गलती को 10 बार बनाने के लिए –

+1

हाँ, मुझे भी।। ट्रिगर्स के साथ कोड की समीक्षा करते समय अब ​​पहली बात यह है कि मैं देखता हूं। –

+1

जो वास्तव में मुद्दा था, धन्यवाद –

-1

मुझे एक ही समस्या है। @ ब्रायन का जवाब सही है! गलत और सही संस्करण हैं। गलत संस्करण:

<TextBlock Text="1999-09-09 16:08" VerticalAlignment="Top" Visibility="Collapsed"> 
           <TextBlock.Style> 
            <Style BasedOn="{StaticResource TipTextYellow}" TargetType="TextBlock"> 
             <Style.Triggers> 
              <DataTrigger Binding="{Binding ElementName=Alcohol,Path=IsFocused}" Value="True"> 
               <Setter Property="Visibility" Value="Visible"/> 
              </DataTrigger> 
             </Style.Triggers> 
            </Style> 
           </TextBlock.Style> 
          </TextBlock> 

सही संस्करण:

<TextBlock Text="1999-09-09 16:08" VerticalAlignment="Top"> 
           <TextBlock.Style> 
            <Style BasedOn="{StaticResource TipTextYellow}" TargetType="TextBlock"> 
             <Setter Property="Visibility" Value="Collapsed"/> 
             <Style.Triggers> 
              <DataTrigger Binding="{Binding ElementName=Alcohol,Path=IsFocused}" Value="True"> 
               <Setter Property="Visibility" Value="Visible"/> 
              </DataTrigger> 
             </Style.Triggers> 
            </Style> 
           </TextBlock.Style> 
          </TextBlock> 
संबंधित मुद्दे