2009-07-10 2 views
2

속성에 바인딩 된 텍스트 상자가 있습니다. 이 속성은 타이머에서 지속적으로 업데이트됩니다. 내가하려고하는 일은 텍스트 상자에 텍스트를 입력하는 중일 때 텍스트 상자가 속성에서 자동으로 업데이트되지 않도록해야한다는 것입니다. 그렇게 할 수있는 방법이 있습니까?지속적으로 업데이트되는 속성에 바인딩 된 텍스트 상자를 수동으로 편집 할 때의 문제

감사합니다.

답변

2

저는 WPF 또는 데이터 바인딩 전문가가 아니기 때문에 더 나은 방법이있을 수 있습니다. 그러나 GotFocus 및 LostFocus 이벤트를 처리하고 해당 이벤트 처리기에서 데이터 바인딩을 추가/제거해야 할 것이라고 말하고 싶습니다.

+0

가 예, 그렇습니다 등을 확인하지 않고, 간단한 양식입니다! 좋은 생각이야. – djcouchycouch

1

나는 순으로 뭔가를 할 거라고 : 당신이 Binding 개체에 액세스 할 수있는 경우, 당신은 자동 업데이트를 방지 할 수 Explicit, 그것의 UpdateSourceTrigger 속성을 설정할 수 있습니다

public void Timer_Tick(object sender,EventArgs eArgs) 
    { 
    if(!Textbox.GotFocus()) 
    { 
      // Regular updating of textbox 
    } 
    } 
1

.

편집

아마도 물론이

UpdateSourceTrigger old; 

protected override void OnGotFocus(RoutedEventArgs e) 
{ 
    Binding b = BindingOperations.GetBinding(textBox1, TextBox.TextProperty); 
    old = b.UpdateSourceTrigger; 
    b.UpdateSourceTrigger = UpdateSourceTrigger.Explicit; 
} 

protected override void OnLostFocus(RoutedEventArgs e) 
{ 
    Binding b = BindingOperations.GetBinding(textBox1, TextBox.TextProperty); 
    b.UpdateSourceTrigger = old; 
} 

같은이는 널 (null)이

+0

흠. 맥스 슈멜링 (Max Schmeling)의 제안과 결합 된 당신의 생각은 해결책의 좋은 단서가 될 것입니다. – djcouchycouch

+0

글쎄, 검색된 Binding 객체에서이 속성을 설정할 GotFocus 핸들러와 LostFocus 핸들러를 추가하기가 너무 어렵지 않습니다. –

+0

약간의 코드를 작성한 후 내 대답을 편집했습니다. –

관련 문제