programing

[ WPF ]체크박스: 변경된 처리를 체크합니다.

i4 2023. 4. 16. 14:34
반응형

[ WPF ]체크박스: 변경된 처리를 체크합니다.

WPF 데이터 바인딩에서는 IsChecked 속성을 일부 데이터(사용자 설정 등)에 바인드할 수 있지만 CheckChanged 이벤트를 처리해야 합니다.Checked, Checked 이벤트를 개별적으로 처리할 수 있습니다.그런데 이 값이 변경되었을 때 알림을 받을 수 있는 방법이 있습니까?

<CheckBox Content="Case Sensitive" IsChecked="{Binding bSearchCaseSensitive,
          Source={x:Static Properties:Settings.Default}}" />

주의: 체크박스가 켜져있든 오프되어있든 상관없습니다.변경되었을 때 알려주시기 바랍니다.

체크된 이벤트와 체크되지 않은 이벤트를 개별적으로 처리할 수 있다고 해서 처리할 필요가 있는 것은 아닙니다.MVVM 패턴을 따르지 않으려면 두 이벤트에 동일한 핸들러를 연결하기만 하면 변경 신호가 있습니다.

<CheckBox Checked="CheckBoxChanged" Unchecked="CheckBoxChanged"/>

및 코드 이면

private void CheckBoxChanged(object sender, RoutedEventArgs e)
{
  MessageBox.Show("Eureka, it changed!");
}

WPF는 INotify를 활용한 MVVM 패턴을 강력히 권장하고 있습니다.PropertyChanged 및/또는 DependencyProperties에는 이유가 있습니다.이것은 효과가 있는 것이지, 좋은 프로그래밍 습관으로 권장하고 싶은 것은 아닙니다.

확인란 클릭 = 확인란 변경 시 다음 작업도 수행됩니다.

<CheckBox Click="CheckBox_Click" />
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
    // ... do some stuff
}

이 기능은 다음과 같은 경우에 사용할 수 있다는 추가적인 장점이 있습니다.IsThreeState="True"반면 Checked와 Checked는 처리하지 않습니다.

코멘트를 하기에는 너무 길기 때문에 답변을 드렸습니다.

VM이 언제 어떤 상태인지 알아야 하는 경우CheckBox변경되어 있는 경우는, 정말로, 이 파일을 바인드 할 필요가 있습니다.CheckBox정적 값이 아닌 VM:

public class ViewModel
{
    private bool _caseSensitive;
    public bool CaseSensitive
    {
        get { return _caseSensitive; }
        set
        {
            _caseSensitive = value;
            NotifyPropertyChange(() => CaseSensitive);

            Settings.Default.bSearchCaseSensitive = value;
        }
    }
}

XAML:

<CheckBox Content="Case Sensitive" IsChecked="{Binding CaseSensitive}"/>

오래된 질문인 건 알지만 그냥 구속하는 건 어때?CommandMVVM을 사용하는 경우

예:

<CheckBox Content="Case Sensitive" Command="{Binding bSearchCaseSensitive}"/>

난 둘 다에 트리거가 돼Check그리고.Uncheck.

MVVM 패턴을 사용하여 체크/체크되지 않은 이벤트를 처리하는 간단하고 적절한 방법은 Caliburn을 사용하여 다음과 같습니다.마이크로:

 <CheckBox IsChecked="{Binding IsCheckedBooleanProperty}" Content="{DynamicResource DisplayContent}" cal:Message.Attach="[Event Checked] = [Action CheckBoxClicked()]; [Event Unchecked] = [Action CheckBoxClicked()]" />

View Model에서 Method CheckBox Clicked()를 구현하여 원하는 작업을 수행합니다.

Checked 이벤트는 어떻게 되나요?이 기능을 AttachedCommandBehaviors 또는 이와 유사한 기능과 결합하면 이벤트가 호출될 마다 뷰 모델에서 함수를 실행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/15480279/wpf-check-box-check-changed-handling

반응형