绑定Itemscontrol项

时间:2016-05-03 08:19:32

标签: c# wpf xaml

我的XAML如下。我有一个主ViewModel,它有一个项目列表,我想在这个列表中显示一个属性

<ItemsControl ItemsSource="{Binding MyList}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding MyName, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"></Label>

        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

问题是MyName总是空白,尽管我的列表有两个项目。

主VM类下面有这个属性,我在构造函数

中添加了项目
public ObservableCollection<InnerViewModel> MyList { get; set; }

我的内心虚拟机

public class InnerViewModel 
{
    private string _MyName;
    public string MyName 
    {
        get
        {
            return _MyName;
        }
        set
        {
            _MyName = value;
            OnPropertyChanged("MyName");
        }
    }

我确实已经安装了OnPropertyChanged,但为了简单起见,我没有在这里粘贴它。我认为问题在于XAML,但我不确定。如何将属性MyName显示在视图中的项目列表中?

2 个答案:

答案 0 :(得分:3)

由于您使用MyList作为ItemsSource,因此子元素的数据源将为MyList。所以你不需要使用RelativeSource。

换句话说,这应该有效:

    <ItemsControl ItemsSource="{Binding MyList}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Label Content="{Binding MyName}"></Label>

            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

答案 1 :(得分:2)

尝试并删除绑定的相对源部分。

<DataTemplate>
    <Label Content="{Binding MyName}"></Label>
</DataTemplate>