在我的WPF应用程序中,我有许多数据绑定TextBoxes.在UpdateSourceTrigger
这些绑定的LostFocus
.使用"文件"菜单保存对象.我遇到的问题是可以在TextBox中输入一个新值,从File菜单中选择Save,并且永远不会保留新值(TextBox中可见的值)因为访问菜单不会从TextBox中删除焦点.我怎样才能解决这个问题?有没有办法强制页面中的所有控件数据绑定?
@palehorse:好点.不幸的是,我需要使用LostFocus作为我的UpdateSourceTrigger,以支持我想要的验证类型.
@dmo:我想到了这一点.然而,对于一个相对简单的问题,它似乎是一个非常不优雅的解决方案.此外,它要求页面上有一些控件,它始终可见以接收焦点.然而,我的应用程序是标签,因此没有这样的控件容易出现.
@Nidonocu:使用菜单没有从TextBox移动焦点的事实也使我感到困惑.然而,这就是我所看到的行为.以下简单示例演示了我的问题:
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<ObjectDataProvider x:Key="MyItemProvider" />
</Window.Resources>
<DockPanel LastChildFill="True">
<Menu DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Save" Click="MenuItem_Click" />
</MenuItem>
</Menu>
<StackPanel DataContext="{Binding Source={StaticResource MyItemProvider}}">
<Label Content="Enter some text and then File > Save:" />
<TextBox Text="{Binding ValueA}" />
<TextBox Text="{Binding ValueB}" />
</StackPanel>
</DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Text;
using System.Windows;
using System.Windows.Data;
namespace WpfApplication2
{
public partial class Window1 : Window
{
public MyItem Item
{
get …
Run Code Online (Sandbox Code Playgroud) 嗨我的用户控件放在选项卡中每次更改选项卡时都会被卸载和加载.它会在应用程序中创建一些不必要的延迟.我正在寻找一些方法来修复这种行为.我知道我必须继承tabcontrol来改变这种行为但是如何..?
在下面的简单WPF应用程序中,a TextBox
设置为在焦点从该控件中丢失时更新属性,如下所示
<DockPanel>
<ToolBar DockPanel.Dock="Top">
<Button>Test</Button>
</ToolBar>
<TextBox Text="{Binding MyString}" />
</DockPanel>
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public string MyString
{
get { return _myString; }
set { _myString = value; }
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此应用程序时,在文本框中输入一些文本,然后单击"测试"按钮,我的MyString
属性上的断点不会引发,也不会引发该FocusLost
事件的任何事件处理程序.仅当通过某些其他方式(例如窗口关闭)从控件丢失焦点时才会引发这些事件.
这对我们造成了问题,因为实际上"测试"按钮包含依赖于MyString
正在更新的属性的逻辑.
FocusLost
当我单击"测试"按钮时,如何确保正确引发事件并更新绑定?看起来问题是由于使用而导致的问题ToolBar
,因为用ToolBar
标准按钮替换不会导致这种行为.