<!-- View -->
<TextBox Text="{Binding str, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
// View Model
private string _str;
public string str
{
get { return _str; }
set
{
if (!value.Contains("a"))
_str = value;
OnPropertyChanged(nameof(str));
}
}
時,當在文本框中鍵入我想把它扔掉任何無效字符(在此示例情況下,字母「A」,但真會是任何東西)。例如:UWP文本框不尊重雙向綁定打字
- 用戶類型「FDS」後面是「A」
- STR檢測,所以它不設置_STR爲「FDSA」,將其保持在「FDS」但無論如何,引發事件以表示拋棄'a'。
- 在WPF中,這會導致包含'fds'的文本框。在UWP中,這導致錯誤地包含'fdsa'的文本框仍然存在。
看來,在UWP中,當一個控件擁有焦點時,它將不會遵守TwoWay綁定。
我可以創建一個按鈕,該按鈕有一個Click事件,按下後會正確更新我的TextBox。
private void btn_Click(object sender, RoutedEventArgs e)
{
OnPropertyChanged(nameof(str));
}
我們有我們需要在WPF和UWP意見使用很多的ViewModels,我們有這個要求的行爲得到處都是。什麼是解決這個問題的好方法?
*編輯*
又重新回到了週末後的問題,它似乎已經解決了自身。我不知道爲什麼。我現在正在討論這個問題。
我認爲是一種與UWP相關的問題,我看到很多人抱怨uwp上的雙向綁定,我在桌面應用上做了一個測試,並且工作正常。也許一個轉換器可以幫助你。 –
我發現這總是很好,只要我明確地設置UpdateSourceTrigger = PropertyChanged – Saxar
你有沒有想過爲什麼發生這種情況?我有這個問題。 – user3007447