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

我的问题是如何显示数据在主要应用程序。我没有使用任何绑定,也不知道如何做到这一点。

谢谢

WPF用户控件:WPF应用程序中不显示的列表框项

推荐的方法是使用视图模型并将其绑定到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/