Как настроить видимость текстового блока как свернутого по умолчанию ... и переключаться в зависимости от условий? - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть TextBlock - который по умолчанию свернут и будет виден только при выполнении двух условий.

У меня ниже XAML для того же. Но это не работает, как ожидалось.

Любая помощь будет оценена. спасибо

<TextBlock Text="{Binding Path=CC.Name}" VerticalAlignment="Center"  FontWeight="Bold" Margin="0,0,10,0"  Visibility="Collapsed">
    <TextBlock.Style>
        <Style>
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>                                
                        <Condition Binding="{Binding Path=IsP}" Value="True" />    
                            <Condition Binding="{Binding Path=IsC}" Value="True" />
                        </MultiDataTrigger.Conditions>

                        <Setter Property="TextBlock.Visibility" Value="Visible"/>

                    </MultiDataTrigger>                           
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

Ответы [ 3 ]

4 голосов
/ 13 декабря 2011

О, это работает, как ожидалось, однако это, вероятно, не то, что вы ожидали. Ключом является приоритет свойства зависимости . «Локальные значения» (установленные в теге элемента) переопределяют все, что пытается сделать стиль. Вам нужно извлечь такие свойства в установщик стиля, который имеет более низкий приоритет, чем триггер стиля.

2 голосов
/ 13 декабря 2011

Вы должны использовать этот сеттер:

<TextBlock Text="{Binding Path=CC.Name}" VerticalAlignment="Center"  FontWeight="Bold" Margin="0,0,10,0">
    <TextBlock.Style>
        <Style>
           <Setter Property="TextBlock.Visibility" Value="Collapsed"/>
           <Style.Triggers>
               <MultiDataTrigger>
                    ...
               </MultiDataTrigger>                           
           </Style.Triggers>
       </Style>
     </TextBlock.Style>
</TextBlock>
0 голосов
/ 13 декабря 2011

Ожидаете ли вы, что между условиями будет применено ИЛИ или И? Вы только собираетесь получить AND. Если вы хотите и ИЛИ просто добавьте еще одно общедоступное свойство, то ИЛИ этих двух.

Представляет триггер, который применяет значения свойств или выполняет действия, когда связанные данные удовлетворяют ряду условий. http://msdn.microsoft.com/en-us/library/system.windows.multidatatrigger.aspx

...