2015-02-03 1 views
0

У меня есть кнопка, где свойство enabled должно происходить дважды. В viewmodel, если для свойства IsEnabled установлено значение false, кнопка должна быть отключена, которая работает нормально. С другой стороны, когда кнопка «Проверить» в пользовательском интерфейсе отключена, эта кнопка также должна быть отключена, которая не работает, что указывает на то, что триггер данных не работает. Пожалуйста помоги.Wpf DataTrigger не работает

<Button x:Name="BtnValidate" Content="Validate" Height="24" VerticalAlignment="Top" Grid.Column="2" Width="83" Command="{Binding ValidateCommand}" IsEnabled="{Binding IsValidateEnabled}" HorizontalAlignment="Left" Margin="8,28,0,0" /> 
    <Button Name="BtnReload" IsEnabled="{Binding IsEnabled}" HorizontalAlignment="Left" Width="123" Grid.Row="0" Grid.Column="5" Content="Reload" Command="{Binding DateCommand}" Margin="8,24,0,32"> 
         <Button.Style> 
          <Style TargetType="Button"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding ElementName=BtnValidate,Path=IsEnabled}" Value="False"> 
             <Setter Property="IsEnabled" Value="False"></Setter> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </Button.Style> 
        </Button> 

ответ

4

Properites, установленные в <Tag> на объекте принять precendence над любым набором свойств в <Style>, так что в вашем случае IsEnabled="{Binding IsEnabled}" всегда будет использоваться. См. MSDN's Dependency Property Precedence List для получения дополнительной информации.

Решение было бы переместить IsEnabled свойство из определения тега и в стиле, так как свойства, установленные в Trigger имеют приоритет над свойствами, заданными в <Style>

<Button Name="BtnReload" Content="Reload" Command="{Binding DateCommand}"> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=BtnValidate,Path=IsEnabled}" Value="False"> 
        <Setter Property="IsEnabled" Value="False"/? 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

Благодаря Рэйчел он работает ... – nikhil

+0

Я думаю, что это создаст проблему, когда свойство IsEnabled Button установлено в False и запускается с запуском, оно не будет устанавливать свойство IsEnabled DataContext. В простом IsEnabled свойство привязано к IsEnabled, но оно устанавливается на фиксированное значение в триггерном сеттере, такое переписывание исходного связывания. –

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

  • Нет связанных вопросов^_^