我有一个从数据库中获取信息的wpf应用程序。当我第一次在默认窗口加载应用程序时,我有需要由数据填充的TextBox,但是文本框不会被填充,所以我想知道,如何在页面加载之前获取值,然后设置文本框文本属性为数据。 我在一个try和catch块中有我的LINQ to SQL代码,如下所示:
try
{
MY LINQ TO SQL CODE HERE:
}
catch
{
}
我确实必须这样做,因为如果我不这样做,只是把SQL代码,我得到一个超时错误。因为我需要这样做,我的sql代码在页面加载之前没有运行,但在加载之后。如何在窗口加载之前运行我的代码,这样我可以设置我的文本框值? 感谢。
答案 0 :(得分:1)
您可以考虑使用asynchronous binding。它甚至内置于XAML语法中,如下所示:
<TextBox Text="{Binding Path=MyBinding,IsAsync=True,FallbackValue=Loading...}" />
现在假设 MyBinding 属性运行SQL:
string _myBinding = null;
public string MyBinding {
get {
if (_myBinding == null)
{
// get value from SQL operation
}
return _myBinding;
}
}
现在你的TextBox将显示回退值(“Loading ...”),UI不会阻止,但会在SQL操作完成时加载。
采用这种方法可能更好,而不是在SQL操作运行时阻止UI(用户可能认为您的应用程序被冻结,感到沮丧等)。
答案 1 :(得分:0)
将查询代码放在实例化窗口时调用的构造函数中。
public class myWindow : Window
{
public myWindow()
{
//code here
InitializeComponent();
}
}
我建议您在执行查询时显示加载屏幕或类似内容,如果查询失败,则显示失败屏幕/消息。