programing

WPF에서 비활성화 버튼을 선택하시겠습니까?

easyjava 2023. 4. 19. 23:34
반응형

WPF에서 비활성화 버튼을 선택하시겠습니까?

WPF 앱에 버튼과 텍스트 박스가 있습니다.사용자가 텍스트 상자에 텍스트를 입력할 때까지 버튼을 활성화하지 않으려면 어떻게 해야 합니까?

이것으로 충분합니다.

<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>

MVVM에서는 View Model에 두 가지 속성이 있습니다(많은 것을 훨씬 쉽게 할 수 있습니다).TextTextBox에 바인드 되어 있으면,ICommand소유물Apply(또는 이와 유사) 버튼에 바인딩되어 있습니다.

<Button Command="Apply">Apply</Button>

ICommand인터페이스에는 메서드가 있습니다.CanExecute그곳이 당신이 돌아오는 곳이다.true if (!string.IsNullOrWhiteSpace(this.Text)나머지는 WPF에 의해 실행됩니다(이네이블화/디세이블화, 클릭 시 실제 명령어 실행).

링크된 기사에 자세히 설명되어 있습니다.

코드별:

btn_edit.IsEnabled = true;

XAML 기준:

<Button Content="Edit data" Grid.Column="1" Name="btn_edit" Grid.Row="1" IsEnabled="False" />

다른 투고처럼 우아하지 않은 것은 알지만, 이것은 같은 것을 실현하는 방법에 대한 보다 간단한 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>

코드 비하인드:

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

가입할 수 있습니다.TextChanged의 이벤트TextBox텍스트가 비어 있는 경우,Button디세이블로 합니다.또는 이 파일을 바인드할 수도 있습니다.Button.IsEnabled의 재산TextBox.Texttrue를 반환하고 false를 반환하는 변환기를 사용합니다.

언급URL : https://stackoverflow.com/questions/2906346/disable-button-in-wpf

반응형