【问题标题】:WPF TextBox UpdateSourceTrigger=LostFocus keeps updating dataWPF TextBox UpdateSourceTrigger=LostFocus 不断更新数据
【发布时间】:2016-12-03 21:11:32
【问题描述】:

我正在学习 WPF 的教程系列。目前我在这一步http://www.wpf-tutorial.com/data-binding/responding-to-changes/

我遇到的问题是我希望文本框只在我离开文本框时更新值。但即使 无论是在里面还是在 TextBox 中,当我更改窗口大小时,该值也会更新。这不是我所期望的。我的错误在哪里?

这里是自己测试的简短代码:

<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>

【问题讨论】:

  • 一切正常,请阅读更多关于LostFocus 的信息。因此,当您更改大小时,文本框会丢失 focus,而不是 keyboard focus

标签: c# .net wpf vb.net data-binding


【解决方案1】:

但是,即使我在 TextBox 中,当我使用该值时也会更新 更改窗口大小。

您自己说过,在更改窗口大小时,值会更新。这是因为焦点从文本框中丢失。如果您希望文本框即使在失去焦点后也能获得焦点,您可以通过编程方式将焦点设置到文本框。

第二个文本框&lt;TextBox Text="{Binding Height, UpdateSourceTrigger=PropertyChanged}" Width="50"/&gt; 也有UpdateSourceTrigger=PropertyChanged。我希望你解释的不是这种情况,因为UpdateSourceTrigger=PropertyChanged 会在文本框中输入新字符时更新源代码。

【讨论】:

  • 当然必须是“但是即使我在TextBox之外......发帖时没有注意到我会立即更新它
  • 我很困惑。在 2 种情况之一中,它不应该更新。当我有焦点或没有时。但它在这两种情况下都会不断更新。
  • 我已经通过设置断点测试了您的代码。对于第一个文本框:仅当焦点从文本框更改时才调用该集。对于第二个文本框:在文本框中输入新字符时调用该集合。
  • 我现在理解了机制。你给了我提示。文本框更新窗口。我的想法是,当我调整窗口大小并将焦点移出第一个 TextBox 时,它应该保持它的价值,但它从来没有这样做过。方向错误。刚刚测试它,现在我明白了。感谢您的帮助。
【解决方案2】:

UpdateSourceTrigger 从文本框工作到绑定控件和属性。所以,我想第一个 TextBox 只有在失去焦点时才更新 Window 的属性 Width 。第二个 TextBox 在每次值更改时更新 Window 的属性 Height。当您调整 Window 的大小时,两个 TextBox 都会更新,因为源是 Window。 UpdateSourceTrigger 属性将 TextBox 视为源。

【讨论】:

  • "所以,我假设第一个 TextBox 只有在失去焦点时才会更新 Window 的属性 Width。"这正是我期望它做的,但它一直在做。这就是为什么我来问为什么。因为这不是我所期望的。
猜你喜欢
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多