Wpf DataTrigger 不工作
Wpf DataTrigger not working
我有一个启用的按钮 属性 应该发生两次。在视图模型中,如果 IsEnabled 属性 设置为 false,则应禁用该按钮,这样可以正常工作。另一方面,当 UI 中的 Validate 按钮被禁用时,该按钮也应该被禁用,它不起作用,这表明数据触发器不起作用。请帮忙。
<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>
对象的 <Tag>
中设置的属性优先于 <Style>
中设置的任何 属性,因此在您的情况下,IsEnabled="{Binding IsEnabled}"
始终是用过的。有关详细信息,请参阅 MSDN's Dependency Property Precedence List。
解决方案是将 IsEnabled
属性 从标签定义中移出并移到样式中,因为触发器中设置的属性优先于 <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>
我有一个启用的按钮 属性 应该发生两次。在视图模型中,如果 IsEnabled 属性 设置为 false,则应禁用该按钮,这样可以正常工作。另一方面,当 UI 中的 Validate 按钮被禁用时,该按钮也应该被禁用,它不起作用,这表明数据触发器不起作用。请帮忙。
<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>
对象的 <Tag>
中设置的属性优先于 <Style>
中设置的任何 属性,因此在您的情况下,IsEnabled="{Binding IsEnabled}"
始终是用过的。有关详细信息,请参阅 MSDN's Dependency Property Precedence List。
解决方案是将 IsEnabled
属性 从标签定义中移出并移到样式中,因为触发器中设置的属性优先于 <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>