我有一個DataTemplate
內Button
控制我ListBoxItem
與TextBlock
裏面裏面按鈕控制的TextBlock的Text屬性的變化IsEnabled屬性:WPF裏面放置的按鈕控制
<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
,將TextBlock
的Text
更改爲「Clicked」。谷歌搜索了一段時間後,我修改了它:
....
<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>
但它不起作用。我究竟做錯了什麼?
我會換你的按鈕爲ToggleButton,並將你的isenabled綁定到梗死,你並不真的需要在那裏看起來像TextBlock。 –
@Chris如果我用Tooglebutton改變它,這是否意味着如果我再次點擊它,該按鈕將再次啓用?如果是這樣,那麼我不想要它:/ – Wahyu
除非你手動恢復IsEnabled上的布爾值。它會像' '所以一旦它被點擊,就是這樣,它被禁用,直到它以某種方式手動復位或屏幕重新渲染等。不確定你的要求,但如果需要保持持久性,你可以保存布爾值。你的反轉布爾轉換器就會使它如此IF IFChecked = True,那麼IsEnabled = False –