C# WPF用户控件填充控件
什么时候(什么事件)应该在WPF用户控件中填充控件(组合框、下拉列表) 目前我使用的是UserControl_-Loaded,但这会触发多次,并且在开发机器上会产生不一致的结果C# WPF用户控件填充控件,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,什么时候(什么事件)应该在WPF用户控件中填充控件(组合框、下拉列表) 目前我使用的是UserControl_-Loaded,但这会触发多次,并且在开发机器上会产生不一致的结果 public UserControl_Load(x, x) { if(!this.Loaded) { //populate controls here } } 如果这是最佳实践,那么我将尝试解决该问题;但我更感兴趣的是什么时候(什么事件)最适合用于填充控件 谢谢 根据Sheridan的回答
public UserControl_Load(x, x)
{
if(!this.Loaded)
{
//populate controls here
}
}
如果这是最佳实践,那么我将尝试解决该问题;但我更感兴趣的是什么时候(什么事件)最适合用于填充控件
谢谢
根据Sheridan的回答,我发现这篇精彩的博文是为那些可能正在寻找关于如何在WPF中正确数据绑定的优秀教程的人准备的()
与其处理事件来填充控件,不如尝试数据绑定方式: 首先在实现以下功能的类(视图模型)中创建集合属性: 现在,如果已经为该属性定义了一个绑定到UI集合控件的
绑定,则UI将自动更新:
<ListBox ItemsSource="{Binding Items}">
...
</ListBox>
最后,我建议您查看MSDN页面以了解更多信息。让WPF决定。为UserControl创建视图模型,并将子控件绑定到视图模型属性。执行绑定时将填充控件。最佳实践是@Clemens在上面写的,但您的方法也应该有效。不要在WPF的过程代码中操纵UI元素。这就是XAML的用途。创建一个合适的ViewModel并使用数据绑定。谢谢-正是我想要的:)
Items = GetSomeItems();
<ListBox ItemsSource="{Binding Items}">
...
</ListBox>
DataContext = new SomeViewModel();