将ListView绑定到同一个类中的属性

时间:2010-11-04 17:30:01

标签: wpf

我有一个Listview,我想将它绑定到在同一个类上声明的列表(代码隐藏)

public ObservableCollection<Slot> ListViewList { get; set; }

<ListView x:Name="ListViewSlots" Margin="0,230,0,0" ItemsPanel="{DynamicResource ItemsPanelTemplate1}" ItemsSource="{Binding Path=UserControl.ListViewList}" >

但是没有用,我尝试将usercontrol的datacontext设置为self和desnt工作。

3 个答案:

答案 0 :(得分:3)

您是否尝试将UserControl的DataContext设置为列表,然后将ListView的ItemsSource设置为?

<ListView ItemsSource="{Binding}" >

答案 1 :(得分:1)

添加到您的窗口


<Window ...
   DataContext="{Binding RelativeSource={RelativeSource Self}}"
>

然后您的ListView变为


<Listview ItemsSource="{Binding ListViewList}">...

答案 2 :(得分:0)

首先,您必须将您的列表介绍给班级的资源:

public List<string> ListViewList
{
    get{ return (List<string> Resources["ListViewList"];}
    set{ Resources["ListViewList"] = value;}
}

或使用ObservableCollection:

private ObservableCollection<string> _listViewList = new ObservableCollection<string>();
public ObservableCollection<string> ListViewList { get { return _listViewList; } }

然后在XAML中,你可以绑定一些东西:

<ListView>
    <ItemsPanel
        ItemsPanel="{DynamicResource ItemsPanelTemplate1}"
        ItemsSource="{Binding ListViewList}"
    />
</ListView>

并且正如Joel所说,您需要设置整个窗口的DataContext (或者只是你正在处理的块)自我:

<Window ...
   DataContext="{Binding RelativeSource={RelativeSource Self}}"
>