Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF用户控件填充控件_C#_Wpf_Wpf Controls - Fatal编程技术网

C# WPF用户控件填充控件

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的回答

什么时候(什么事件)应该在WPF用户控件中填充控件(组合框、下拉列表)

目前我使用的是UserControl_-Loaded,但这会触发多次,并且在开发机器上会产生不一致的结果

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();