在加载wpf页面之前获取sql值

时间:2012-05-21 00:17:11

标签: c# wpf

我有一个从数据库中获取信息的wpf应用程序。当我第一次在默认窗口加载应用程序时,我有需要由数据填充的TextBox,但是文本框不会被填充,所以我想知道,如何在页面加载之前获取值,然后设置文本框文本属性为数据。 我在一个try和catch块中有我的LINQ to SQL代码,如下所示:

try
{
   MY LINQ TO SQL CODE HERE:
}
catch
{

}

我确实必须这样做,因为如果我不这样做,只是把SQL代码,我得到一个超时错误。因为我需要这样做,我的sql代码在页面加载之前没有运行,但在加载之后。如何在窗口加载之前运行我的代码,这样我可以设置我的文本框值? 感谢。

2 个答案:

答案 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();
    }
}

我建议您在执行查询时显示加载屏幕或类似内容,如果查询失败,则显示失败屏幕/消息。