Silverlight - 标签

时间:2012-11-26 16:28:44

标签: silverlight

使用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();
    }
}

1 个答案:

答案 0 :(得分:0)

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