【发布时间】:2013-08-23 19:22:36
【问题描述】:
代码:
public partial class MyControl : UserControl
{
int size = 8;
public int Size
{
get { return size; }
set { size = value; Initialize(); }
}
public MyControl()
{
InitializeComponent();
Initialize();
}
void Initialize()
{
// ...
}
}
XAML:
<local:MyControl"/>
或:
<local:MyControl Size="10"/>
当在 XAML 中设置 Size 属性时,Initialize 被调用两次。如果我从InitializeComponent 中删除Initialize 调用,则Initialize 会从Size setter 调用一次。但在这种情况下,如果 XAML 中没有设置 Size,则根本不会调用 Initialize。
有没有办法编写初始化函数,在所有控件属性(如果有)从 XAML 设置之后执行一次?
【问题讨论】:
-
虽然您可以使用
Loaded事件,但它仍然可以被多次调用(事件本身,以及您的函数)。如果您只希望您的函数运行一次,则可能有一个 bool 类成员来检测该函数是否已被调用并忽略该函数的任何未来调用?类似于:This
标签: wpf xaml user-controls