WPF用户控件:WPF应用程序中不显示的列表框项
本文关键字:WPF 列表 显示 用户 控件 应用程序 | 更新日期: 2023-09-27 17:54:37
我想制作一个带有列表框的wpf用户控件。在这个列表框中,我添加了一个stackpanel作为列表框项。但是当我想在应用程序中使用我的用户控件时,这个用户控件不显示任何数据。
这里是我的xaml代码的用户控制
<Grid>
<ListBox x:Name="lb" >
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>
在列表框中添加数据
StackPanel sp1 = new StackPanel();
sp1.Children.Add(someuielement);// some ui element i generate dynamically
lb.Items.Add(sp1);
我的问题是如何显示数据在主要应用程序。我没有使用任何绑定,也不知道如何做到这一点。
谢谢
推荐的方法是使用视图模型并将其绑定到ListBox的Items属性。这样的:
<ListBox ItemsSource="{Binding DataItems}">...
然后在代码后面,你可以简单地将视图模型绑定到控件或父窗口,而不是动态地生成ui元素。
lb.DataContext = new MyViewModel();
可能像这样:
class MyViewModel : ObservableObject
{
public ObservableCollection<MyDataItem> DataItems {get; private set;}
public MyViewModel()
{
this.DataItems = new ObservableCollection<MyDataItem>();
}
}
请看这里一个简单的ObservableObject
实现:http://justinmchase.com/2010/08/26/observableobject-for-wpf-mvvm/