san*_*084 48 wpf textbox button
我的WPF应用程序中有一个Button和一个TextBox.在用户在TextBox中输入某些文本之前,如何才能启用Button?
Ste*_*rex 48
这应该这样做:
<StackPanel>
<TextBox x:Name="TheTextBox" />
<Button Content="Click Me">
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=TheTextBox}" Value="">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
bit*_*onk 19
在MVVM中(这使得很多东西变得容易很多 - 你应该尝试一下)你的ViewModel Text
中有两个绑定到TextBox的属性,你将拥有一个Apply
绑定到按钮的ICommand属性(或类似):
<Button Command="Apply">Apply</Button>
Run Code Online (Sandbox Code Playgroud)
该ICommand
接口有一个方法CanExecute
就是,你返回true
if (!string.IsNullOrWhiteSpace(this.Text)
.其余的由WPF为您完成(启用/禁用,在单击时执行实际命令).
链接的文章详细解释了它.
dan*_*004 15
按代码:
btn_edit.IsEnabled = true;
Run Code Online (Sandbox Code Playgroud)
通过XAML:
<Button Content="Edit data" Grid.Column="1" Name="btn_edit" Grid.Row="1" IsEnabled="False" />
Run Code Online (Sandbox Code Playgroud)
我知道这不像其他帖子那么优雅,但它是一个更简单的xaml/codebehind示例,说明如何完成同样的事情.
XAML:
<StackPanel Orientation="Horizontal">
<TextBox Name="TextBox01" VerticalAlignment="Top" HorizontalAlignment="Left" Width="70" />
<Button Name="Button01" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,0,0,0" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Button01.IsEnabled = False
Button01.Content = "I am Disabled"
End Sub
Private Sub TextBox01_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.TextChangedEventArgs) Handles TextBox01.TextChanged
If TextBox01.Text.Trim.Length > 0 Then
Button01.IsEnabled = True
Button01.Content = "I am Enabled"
Else
Button01.IsEnabled = False
Button01.Content = "I am Disabled"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)