簡體   English   中英

WPF TextBox UpdateSourceTrigger = LostFocus不斷更新數據

[英]WPF TextBox UpdateSourceTrigger=LostFocus keeps updating data

我正在逐步完成WPF的教程系列。 目前,我正在此步驟http://www.wpf-tutorial.com/data-binding/responding-to-changes/

我遇到的問題是,我希望文本框僅在離開文本框時才更新該值。 但是,即使在文本框內還是文本框 ,當我更改窗口大小時,該值也會被更新。 那不是我所期望的。 我的錯誤在哪里?

這里是代碼的簡短版本,可以自己進行測試:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <WrapPanel Orientation="Horizontal" Margin="0,10,0,0">
            <TextBlock Text="Window dimensions: "/>
            <TextBox Text="{Binding Width, UpdateSourceTrigger=LostFocus}" Width="50" />
            <TextBlock Text=" x " />
            <TextBox Text="{Binding Height, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
        </WrapPanel>
    </Grid>
</Window>

但是,即使我在TextBox中,更改窗口大小時,值的獲取也會更新。

您自己說過,在更改窗口大小時,該值會更新。 這是因為焦點從文本框中丟失了。 如果您希望焦點即使在失去焦點之后也可以通過編程將焦點設置到文本框。

第二個文本框<TextBox Text="{Binding Height, UpdateSourceTrigger=PropertyChanged}" Width="50"/>也具有UpdateSourceTrigger=PropertyChanged 我希望不是您要解釋的情況,因為只要在文本框中輸入新字符, UpdateSourceTrigger=PropertyChanged就會更新源。

UpdateSourceTrigger從文本框到綁定控件和屬性均有效。 因此,我想第一個TextBox僅在失去焦點時才更新Window的Width屬性。 第二個TextBox在每次更改值時都會更新“窗口的高度”屬性。 調整窗口大小時,兩個文本框都會更新,因為源是窗口。 UpdateSourceTrigger屬性將TextBox作為源起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM