0

使用 Silverlight5。

    <sdk:TabControl >
        <sdk:TabItem Header="Num1" IsSelected="True">
            <UserControls:Tab1Data />
        </sdk:TabItem>

        <sdk:TabItem Header="Num2" >
            <UserControls:Tab2Data />
        </sdk:TabItem>

    </sdk:TabControl>

为什么在运行时调用非选定选项卡上的构造函数?

public partial class Tab2Data : UserControl
{
    public Tab2Data()
    {
        InitializeComponent();
        var x = 1; //set a breakpoint here and it hits when debugging the app
    }
}

我读过设计选项卡只有在按下时才会“运行”。

如果这是设计使然,我需要在每个构造函数中弄清楚如何判断它是否已被“选择”,以便我可以调用昂贵的数据库操作。我不希望整个应用程序在启动时加载其数据库相关数据(主要是下拉菜单)

EDIT2:我已经连接了一个选定的检查,它提供了所需的功能..

private void TabOverallMain_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
    var selectedItem = (TabItem)e.AddedItems[0];

    if (selectedItem.Header.ToString() == "Num2") {
        tab2Data.PopulateDropDowns();
    }
}
4

1 回答 1

0

AFAIK 不建议在控件构造函数中做繁重的工作人员(从数据库等加载)。对导航页面使用 'loaded' 事件或 'NavigatedTo'。不要忘记 DesignerProperties.IsInDesignTool 属性。

于 2012-11-30T19:41:09.283 回答