[ 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}"/>
오래된 질문인 건 알지만 그냥 구속하는 건 어때?Command
MVVM을 사용하는 경우
예:
<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
'programing' 카테고리의 다른 글
백그라운드에서 앱을 열 때 ViewDidEar가 호출되지 않음 (0) | 2023.04.21 |
---|---|
Visual Studio에서 기본 컨트롤 템플릿을 추출하는 방법 (0) | 2023.04.16 |
폴더를 기존 Heroku 앱과 링크하는 방법 (0) | 2023.04.16 |
핫픽스 브랜치를 기능 브랜치로 병합 (0) | 2023.04.16 |
Excel File vs. read_excel in Panda (0) | 2023.04.16 |