2016-09-26 3 views
1

У меня есть много компонентов в моем XAML, мне нужен Fire Trigger, когда один или несколько компонентов изменили ваше значение.Как срабатывал огонь при изменении одного или нескольких свойств?

Я не хочу использовать один PropertyChangedTrigger для каждого компонента, я хочу использовать один триггер для всех компонентов.

спасибо.

ответ

0

Да, используйте MultiDataTrigger. Вот пример из связанной документации MSDN о том, как вы можете использовать это на нескольких свойствах:

<Window.Resources> 
    <c:Places x:Key="PlacesData"/> 

    <Style TargetType="ListBoxItem"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=State}" Value="WA"> 
     <Setter Property="Foreground" Value="Red" /> 
     </DataTrigger>  
     <MultiDataTrigger> 
     <MultiDataTrigger.Conditions> 
      <Condition Binding="{Binding Path=Name}" Value="Portland" /> 
      <Condition Binding="{Binding Path=State}" Value="OR" /> 
     </MultiDataTrigger.Conditions> 
     <Setter Property="Background" Value="Cyan" /> 
     </MultiDataTrigger> 
    </Style.Triggers> 
    </Style> 

    <DataTemplate DataType="{x:Type c:Place}"> 
    <Canvas Width="160" Height="20"> 
     <TextBlock FontSize="12" 
      Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/> 
     <TextBlock FontSize="12" Width="30" 
       Canvas.Left="130" Text="{Binding Path=State}"/> 
    </Canvas> 
    </DataTemplate> 
</Window.Resources> 

<StackPanel> 
    <TextBlock FontSize="18" Margin="5" FontWeight="Bold" 
    HorizontalAlignment="Center">Data Trigger Sample</TextBlock> 
    <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew" 
    ItemsSource="{Binding Source={StaticResource PlacesData}}"/> 
</StackPanel> 

EDIT: Не чистейшее решения когда-либо, но вы могли бы сделать something like this. основном использовать MultiDataTrigger выполнять всякий раз, когда какие-либо из свойств изменить , Затем вы используете конвертер для простой проверки нуля (или, возможно, вы всегда можете вернуть true в вашем случае). Таким образом, ваше значение в MultiDataTrigger просто True вместо определенного значения.

+0

Спасибо, но я хочу, огнь триггер любого значения изменился, в вашем примере триггер запускается, когда условное равен true, правильно? –

+0

Hmmm MultiTrigger и MultiDataTrigger нуждаются в определенных значениях, потому что они сравнивают сравнительные значения. Можете ли вы рассказать мне более конкретно, что вы пытаетесь решить? Используете ли вы несколько свойств для вычисления значения или чего-то еще? – rmc00

+0

Да, мне нужна пожарная команда в моей модели просмотра, чтобы заполнить список, если одно или несколько текстовых полей изменились. –

0

Создайте свое собственное событие и пожарите, когда это необходимо. (How can I make my own event in C#?)

Затем определяют «UpdateSourceTrigger» в связывающем выражении вашего Xaml-элементы, чтобы заставить их слушать ваше вновь определенное событие

+0

большое спасибо. это решает мою проблему, но я нахожу решение «Pretty» –

Смежные вопросы