如果我們有約束「雙向」的時間跨度財產上的視圖模型組合框,以及轉換器改變時間跨度視圖模型屬性設置爲一個字符串,增加了對分鐘「M」,然後當編輯組合框的值從10m到5時,我預計:奇怪的組合框的行爲
WPF綁定調用ConvertBack以獲取更新源屬性的值 - 假設這是5分鐘的時間範圍。
視圖模型的時間跨度屬性setter被調用並設置基礎字段(從10至5的入庫時間變化的),然後使OnPropertyChanged
WPF綁定接收事件,因此調用其處理方法,其中首先進行轉換爲該值,然後將此'5m'轉換後的值設置爲目標文本屬性
除了最後一步沒有發生,並且comboxbox仍然保持在5.我實際上想要這種行爲,但想知道爲什麼最後一步不會發生。奇怪的是改變到一個文本框確實給我預期(更新5立即5M)
編輯的行爲:原題錯誤陳述文本框,我應該寫的ComboBox
UPDATE:使用snoop實用程序,我看ComboBox的文本屬性確實變成了5米,但顯示仍然是5 - 我只能假設如果組合框正在被編輯,它不會刷新它的文本顯示。使用轉換器將問題標題從「WPF數據綁定目標 - 源 - 目標週期」更改爲更準確地反映現在的情況。
謝謝 - 我認爲'無限循環'是通過檢查,以避免更新目標或源之前屬性值是否已更改。這是雙向綁定,我的問題是關於不更新目標的轉換方法。 – sturdytree 2012-02-25 07:42:21