Как настроить видимость текстового блока как свернутую по умолчанию и переключаться в зависимости от условий?

У меня есть 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>

person Relativity    schedule 12.12.2011    source источник


Ответы (3)


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

<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>
person Anthony    schedule 12.12.2011
comment
@Relativity: (Это потому, что он молча удалил свою ошибку в течение пяти минут после отправки ответа, который, кстати, был после моего) - person H.B.; 13.12.2011
comment
Я не могу быстро отвечать на вопросы по-английски... поэтому я вставил этот код и немного позже набрал несколько слов.... - person Anthony; 13.12.2011
comment
человеку свойственно ошибаться... я видел эту ошибку - ты имеешь в виду -> Видимость=Свернуто...правильно. Но я нашел решение из этого. - person Relativity; 13.12.2011

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

person H.B.    schedule 12.12.2011
comment
Я знал о правиле приоритета ... но никогда не знал, как его преодолеть :) ... Большое спасибо - person Relativity; 13.12.2011

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

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

person paparazzo    schedule 12.12.2011