我正在编写测试,它将检查BindingXAML中指定的元素的正确性.它们到目前为止工作,唯一的问题是我不知道如何正确地强制数据绑定发生.令人惊讶的是,仅仅设置内容是不够的,在DataContext显示控件/窗口之前不会发生绑定.请注意,我正在编写'单元'测试,我想避免显示任何窗口.
看看下面的代码:
// This is main class in console application where I have all WPF references added
public class Program
{
[STAThread]
public static void Main()
{
var view = new Window();
BindingOperations.SetBinding(view, Window.TitleProperty, new Binding("Length"));
view.DataContext = new int[5];
//view.Show(); view.Close(); // <-- this is the code I'm trying not to write
Console.WriteLine(view.Title);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在创建一个Window并DataContext为该窗口放置一个数组.我绑定Window.Title了Array.Length所以我希望5在控制台中看到数字.但是直到我Show窗口(注释行)我才会得到空字符串.如果我取消注释该行,那么我将5在控制台输出中收到所需的内容.
有没有办法在不显示窗口的情况下进行绑定?在启动测试时查看~20个窗口非常烦人.
PS:我知道我可以让窗户更透明等等,但我正在寻找更优雅的解决方案.
UPDATE上面的代码是我真正拥有的简化版本.在实际代码中,我收到View一些(有些UIElement …