Binding의 각 속성 (UpdateSourceTrigger, Delay, NotifyOnSourceUpdated)의 동작에 대해

3175 단어 XamlC#WPF

바인딩



평소에는 거기까지 참지 않는 속성을 메인에 비망록

BindingGroupName



바인딩을 그룹으로 지정할 때에 이용합니다.
BindingGroupName을 지정하는 것으로 일괄로 복수 컨트롤의 바인딩등을 조작할 수 있다.

BindsDirectlyToSource



Path를 평가할 때 데이터 항목을 기준으로 할지 또는 DataSourceProvider 개체를 기준으로 할지 여부를 나타내는 값을 가져오거나 설정합니다.

UpdateSourceTrigger



바인딩 타이밍을 조작할 수 있습니다.
  • LostFocus

  • 로스트 포커스시에 동작
  • PropertyChanged

  • 속성 변경시 동작.
  • Explicit

  • 매뉴얼, 갱신 타이밍은 BindingExpression.UpdateSource에서 실행하는 등 타이밍을 완전하게 제어하고 싶은 경우에 이용.
    각 갱신 타이밍의 동작 이미지



    Delay



    소스를 업데이트하기 전에 밀리초 단위로 대기합니다.
    .xaml
    <TextBox  Text="{Binding Text, ElementName=txtInput, UpdateSourceTrigger=PropertyChanged, Delay=1000}"/>
    




    NotifyOnSourceUpdated
    활성화하면 소스 업데이트 시 이벤트(NotifyOnSourceUpdated)가 활성화됩니다.
    별로 사용하지 않을 것 같지만 디버깅 목적으로 일시적으로 켜서 모니터링에 사용합니다.
    .xaml
    <TextBox  x:Name="txtNotifySouce"  Text="{Binding Text, ElementName=txtInput, NotifyOnSourceUpdated=True}"
       Binding.SourceUpdated="SourceUpdatedHandler"  />
    
    .cs
    private void SourceUpdatedHandler(object sender, DataTransferEventArgs args)
    {
       UpdatedLog("SourceUpdatedHandler", args);
    }
    

    NotifyOnTargetUpdated
    여기는 소스의 타겟 갱신시의 프로퍼티입니다.
    .xaml
                            <TextBox x:Name="txtNotifyTarget" Text="{Binding Text, ElementName=txtInput, NotifyOnTargetUpdated=True}"
                                      Binding.TargetUpdated="TargetUpdatedHandler"/>
    
    .cs
    private void TargetUpdatedHandler(object sender, DataTransferEventArgs args)
    {
       UpdatedLog("TargetUpdatedHandler", args);
    }
    
    NotifyOnSourceUpdated 및 NotifyOnTargetUpdated는 DataTransferEventArgs를 얻을 수 있으므로,
    세세한 속성까지 참조 가능합니다. 아래 속성 이름과 컨트롤의 내용을 출력합니다.




    IsAsync
    Binding을 수행할 때 비동기의 사용 불가능을 제어할 수 있습니다.
    사용성 향상이나 일부 컨트롤의 동작이 느린 경우에 유효하네요.
    화상+비동기의 대응에 대해서는 하기의 페이지가 참고가 됩니다.
    Async Data Binding & Data Virtualization - CodeProject

    샘플용으로 만든 소스를 커밋하고 있습니다.
    GitHub - furugen/StudyBinding

    좋은 웹페이지 즐겨찾기