我Button
内DataTemplate
有一个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>
但它不起作用。我做错了什么?
答案 0 :(得分:1)
所以喜欢讨论。如果我们只是将Button
换成ToggleButton
并绑定到自己的IsEnabled
到IsChecked
。然后按下它将自动禁用,直到通过其他方式手动重置。喜欢的东西;
<ToggleButton IsEnabled="{Binding IsChecked,
RelativeSource={RelativeSource Self},
Converter="{StaticResource InvertedBoolConverter"}}"/>
使用反向布尔转换器在IsEnabled属性上基于IsChecked将True替换为False,反之亦然。因为一旦你点击它,它现在被禁用,用户将无法取消选中ToggleButton。希望这可以帮助。