wpf更改Button控件的IsEnabled属性和TextBlock的Text属性,它放在Button控件中

时间:2016-01-04 14:56:36

标签: wpf xaml triggers

ButtonDataTemplate有一个ListBoxItem控件,TextBlock内有一个<DataTemplate x:Key="SomeitemTempate"> .... <Button x:Name="nxBut" Margin="20,0,20,20" Height="30" DockPanel.Dock="Bottom" FontSize="16" Background="White" Click="nxBut_Click"> <TextBlock x:Name="nxBut_Txt" Text="Some Button" FontWeight="Bold" Foreground="#FF11700C"/> </Button> ....

Button

现在,当用户点击IsEnabled时,我想将按钮的False属性更改为Text,将TextBlock的{​​{1}}更改为“点击”。谷歌搜索了一段时间后,我修改了它:

    ....
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding ElementName=nxBut, Path=IsPressed}" Value="True">
            <Setter TargetName="nxBut" Property="IsEnabled" Value="False" />
            <Setter TargetName="nxBut_Txt" Property="Text" Value="Clicked"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

但它不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

所以喜欢讨论。如果我们只是将Button换成ToggleButton并绑定到自己的IsEnabledIsChecked。然后按下它将自动禁用,直到通过其他方式手动重置。喜欢的东西;

<ToggleButton IsEnabled="{Binding IsChecked, 
                                  RelativeSource={RelativeSource Self},
                                  Converter="{StaticResource InvertedBoolConverter"}}"/>

使用反向布尔转换器在IsEnabled属性上基于IsChecked将True替换为False,反之亦然。因为一旦你点击它,它现在被禁用,用户将无法取消选中ToggleButton。希望这可以帮助。