WPF CheckBox를 조건부에 바인딩하는 방법은 무엇입니까?

숀 루틴

모델보기

public class MyViewModel
{
    public string MyProperty { get; set; }
}

XAML

<CheckBox IsChecked="{Binding !MyProperty.Equals('Steve')}" />

이것이 가능한가? 어떻게?

Gayot Fow

이러한 종류의 작업은 View Model의 논리를 포함하지 않고 Xaml에서 수행 할 수 있으며 많은 사람들 수행 해야 한다고 말합니다 . 작동하는지 보려면 다음과 같은 뷰 모델을 생성하십시오.

public class ViewModel : INotifyPropertyChanged
{
    private string _myProperty;
    public string MyProperty
    {
        [DebuggerStepThrough]
        get { return _myProperty; }
        [DebuggerStepThrough]
        set
        {
            if (value != _myProperty)
            {
                _myProperty = value;
                OnPropertyChanged("MyProperty");
            }
        }
    }
    #region INotifyPropertyChanged Implementation
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string name)
    {
        var handler = System.Threading.Interlocked.CompareExchange(ref PropertyChanged, null, null);
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }
    #endregion
}

그런 다음 다음과 같은 일부 Xaml에 바인딩합니다.

<Grid>
    <CheckBox Content="Some check box">
        <CheckBox.Style>
            <Style TargetType="CheckBox">
                <Setter Property="IsChecked" Value="False"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding MyProperty}" Value="Steve">
                        <Setter Property="IsChecked" Value="True"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </CheckBox.Style>
    </CheckBox>
</Grid>

이는 데이터 트리거로 스타일이 지정된 표준 WPF 확인란입니다. 트리거는 'MyProperty'속성에 "Steve"가 포함될 때마다 IsChecked 속성을 true로 설정합니다. 그렇지 않으면 CB는 선택 해제됩니다 (스타일의 재정의 Setter에 따라). 트리거가 VM의 'MyProperty'변경 사항을 수신하기 때문에 작동합니다. 따라서 시각화는 전적으로 사용자 표면으로 넘어갑니다.

트리거를 결합 (템플릿 선택기와 함께 사용)하여 WPF에 내장 된 강력한 기능에 액세스 할 수 있습니다. 배경색 등과 같은 확인란의 모든 종속성 속성에 바인딩됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

checkBox를 부울 속성에 바인딩하는 방법은 무엇입니까?

분류에서Dev

Web API의 데이터를 WPF의 ListBox에 올바르게 바인딩하는 방법은 무엇입니까?

분류에서Dev

D3 : SVG 객체를 데이터에 조건부로 바인딩하는 방법은 무엇입니까?

분류에서Dev

WPF에서 필드를 DataGrid에 바인딩하는 방법은 무엇입니까?

분류에서Dev

WPF에서이 바인딩 오류를 수정하는 방법은 무엇입니까?

분류에서Dev

WPF DataGrid에서 행 헤더를 바인딩하는 방법은 무엇입니까?

분류에서Dev

WPF : 일반 데이터를 TreeView에 바인딩하는 방법은 무엇입니까?

분류에서Dev

WPF의 기존 루트 요소에 조건부로 새 XElement를 추가하는 방법은 무엇입니까?

분류에서Dev

WPF에서 UpdateSourceTrigger에 바인딩하는 방법은 무엇입니까?

분류에서Dev

asp.net의 일부 조건으로 gridview를 바인딩하는 방법은 무엇입니까?

분류에서Dev

WPF에서 UserControl 바인딩을 바인딩하고 새로 고치는 방법은 무엇입니까?

분류에서Dev

Java에서 조건부를 부정하는 방법은 무엇입니까?

분류에서Dev

데이터 바인딩을 사용하여 WPF에서 컨트롤의 상태를 올바르게 변경하는 방법은 무엇입니까?

분류에서Dev

WPF에서 바인딩 된 텍스트를 사용자 지정하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

조건부로 데이터 컨텍스트의 멤버에 텍스트 상자를 바인딩하는 방법은 무엇입니까?

분류에서Dev

xml 태그의 데이터를 xamdatagrid의 콤보 상자 또는 wpf의 datagrid에 바인딩하는 방법은 무엇입니까?

분류에서Dev

WPF XAML에서 데이터 트리거를 사용하여 텍스트 블록의 두 속성을 바인딩하는 방법은 무엇입니까?

분류에서Dev

Mutt에서 <Control> <Arrowkey>를 바인딩하는 방법은 무엇입니까?

분류에서Dev

ExtJ에서 리스너를 바인딩하는 방법은 무엇입니까?

분류에서Dev

Timestamp를 RowMapper로 Long에 바인딩하는 방법은 무엇입니까?

분류에서Dev

Blazor : Nullable 개체를 <select>에 바인딩하는 방법은 무엇입니까?

분류에서Dev

ts 변수를 html에 바인딩하는 방법은 무엇입니까?

분류에서Dev

Mutt에서 <Control> <Arrowkey>를 바인딩하는 방법은 무엇입니까?

분류에서Dev

exit를 키에 바인딩하는 방법은 무엇입니까?

분류에서Dev

Bash readline에서 'Enter 키'를 바인딩하는 방법은 무엇입니까?

분류에서Dev

JSpinner를 맵에 바인딩하는 방법은 무엇입니까?

분류에서Dev

DataGrid에서 innergrid를 바인딩하는 방법은 무엇입니까?

분류에서Dev

텍스트를 svg rect에 바인딩하는 방법은 무엇입니까?

분류에서Dev

objectdatasource를 html select <tag>에 바인딩하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    checkBox를 부울 속성에 바인딩하는 방법은 무엇입니까?

  2. 2

    Web API의 데이터를 WPF의 ListBox에 올바르게 바인딩하는 방법은 무엇입니까?

  3. 3

    D3 : SVG 객체를 데이터에 조건부로 바인딩하는 방법은 무엇입니까?

  4. 4

    WPF에서 필드를 DataGrid에 바인딩하는 방법은 무엇입니까?

  5. 5

    WPF에서이 바인딩 오류를 수정하는 방법은 무엇입니까?

  6. 6

    WPF DataGrid에서 행 헤더를 바인딩하는 방법은 무엇입니까?

  7. 7

    WPF : 일반 데이터를 TreeView에 바인딩하는 방법은 무엇입니까?

  8. 8

    WPF의 기존 루트 요소에 조건부로 새 XElement를 추가하는 방법은 무엇입니까?

  9. 9

    WPF에서 UpdateSourceTrigger에 바인딩하는 방법은 무엇입니까?

  10. 10

    asp.net의 일부 조건으로 gridview를 바인딩하는 방법은 무엇입니까?

  11. 11

    WPF에서 UserControl 바인딩을 바인딩하고 새로 고치는 방법은 무엇입니까?

  12. 12

    Java에서 조건부를 부정하는 방법은 무엇입니까?

  13. 13

    데이터 바인딩을 사용하여 WPF에서 컨트롤의 상태를 올바르게 변경하는 방법은 무엇입니까?

  14. 14

    WPF에서 바인딩 된 텍스트를 사용자 지정하는 가장 좋은 방법은 무엇입니까?

  15. 15

    조건부로 데이터 컨텍스트의 멤버에 텍스트 상자를 바인딩하는 방법은 무엇입니까?

  16. 16

    xml 태그의 데이터를 xamdatagrid의 콤보 상자 또는 wpf의 datagrid에 바인딩하는 방법은 무엇입니까?

  17. 17

    WPF XAML에서 데이터 트리거를 사용하여 텍스트 블록의 두 속성을 바인딩하는 방법은 무엇입니까?

  18. 18

    Mutt에서 <Control> <Arrowkey>를 바인딩하는 방법은 무엇입니까?

  19. 19

    ExtJ에서 리스너를 바인딩하는 방법은 무엇입니까?

  20. 20

    Timestamp를 RowMapper로 Long에 바인딩하는 방법은 무엇입니까?

  21. 21

    Blazor : Nullable 개체를 <select>에 바인딩하는 방법은 무엇입니까?

  22. 22

    ts 변수를 html에 바인딩하는 방법은 무엇입니까?

  23. 23

    Mutt에서 <Control> <Arrowkey>를 바인딩하는 방법은 무엇입니까?

  24. 24

    exit를 키에 바인딩하는 방법은 무엇입니까?

  25. 25

    Bash readline에서 'Enter 키'를 바인딩하는 방법은 무엇입니까?

  26. 26

    JSpinner를 맵에 바인딩하는 방법은 무엇입니까?

  27. 27

    DataGrid에서 innergrid를 바인딩하는 방법은 무엇입니까?

  28. 28

    텍스트를 svg rect에 바인딩하는 방법은 무엇입니까?

  29. 29

    objectdatasource를 html select <tag>에 바인딩하는 방법은 무엇입니까?

뜨겁다태그

보관