1

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

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

}

我真的必须这样做,因为如果我不这样做并且只输入 SQL 代码,我会收到超时错误。所以因为我需要这样做,所以我的 sql 代码在页面加载之前没有运行,而是在它加载之后运行。我怎样才能让它在加载窗口之前运行我的代码,这样我就可以设置我的文本框值?谢谢。

4

2 回答 2

1

您可以考虑为此使用异步绑定。它甚至内置于 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 将显示回退值(“正在加载...”),并且 UI 不会阻塞,而是会在您的 SQL 操作完成时加载。

采用这种方法可能比在 SQL 操作运行时阻塞 UI 更好(用户可能认为您的应用程序被冻结、感到沮丧等)。

于 2012-05-21T00:43:16.810 回答
0

将查询代码放在实例化窗口时调用的构造函数中。

public class myWindow : Window
{
    public myWindow()
    {
         //code here
         InitializeComponent();
    }
}

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

于 2012-05-21T00:31:24.400 回答