2016-09-26 2 views
1

Вы видите что-то не так с этим триггером?Триггер XAML не запускается

<Border Margin="2" BorderBrush="#6593CF" BorderThickness="1.5" > 
         <Border.Style> 
          <Style> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding IsCreating, UpdateSourceTrigger=PropertyChanged}" Value="true"> 
             <Setter Property="Border.BorderBrush" Value="Lime"/> 
             <Setter Property="Border.BorderThickness" Value="3" /> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </Border.Style> 

        </Border> 

Это связано с этим свойством:

private bool _IsCreating = false; 
public bool IsCreating 
     { 
      get 
      { 
       return _IsCreating; 
      } 
      set 
      { 
       if (_IsCreating == value) 
       { 
        return; 
       } 
       _IsCreating = value;    
       RaisePropertyChanged("IsCreating"); 
      } 
     } 

Когда я установил IsCreating = истина, стиль не обновляется.

+0

Где вы указали «DataContext» в XAML? –

+0

Можете ли вы предоставить код для «RaisePropertyChanged»? –

+0

И попробуйте Binding = "{Binding Path = IsCreating, .... –

ответ

2

Вы установили BorderBrush и BorderThinkness в линию на своей границе. Объявление Inline имеет quite hight precedence и отменяет ваш триггер. Удалите свою встроенную декларацию с границы и переместите ее на триггер:

<Border Margin="2"> 
    <Border.Style> 
     <Style TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <DataTrigger 
        Binding="{Binding Path=DataContext.IsCreating, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" 
        Value="true"> 
        <Setter Property="BorderBrush" Value="Lime" /> 
        <Setter Property="BorderThickness" Value="3" /> 
       </DataTrigger> 
       <DataTrigger 
        Binding="{Binding Path=DataContext.IsCreating, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" 
        Value="false"> 
        <Setter Property="BorderBrush" Value="#6593CF" /> 
        <Setter Property="BorderThickness" Value="1.5" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
    <CheckBox IsChecked="{Binding IsCreating}" /> 
</Border> 
+0

Thx 3615 вы на 100% прав. Я думал, что встроенные значения будут действовать как по умолчанию: неверное предположение :) –

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