使用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();
}
}
答案 0 :(得分:0)
AFAIK不建议在控件构造函数中执行繁重的工作人员(从db等加载)。对导航页面使用'loaded'事件或'NavigatedTo'。不要忘记DesignerProperties.IsInDesignTool属性。