IEnumerable 依赖属性未按预期工作

问题描述 投票:0回答:1

我有一个看起来像这样的用户控件,

<ItemsControl x:Name="_opt" ItemsSource="{Binding Sources, RelativeSource={RelativeSource AncestorType=UserControl}}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding }"/>           
        </DataTemplate>
     </ItemsControl.ItemTemplate>
 </ItemsControl>

我创建了一个 IEnumerable 依赖属性,称为源,有点像这样,

public IEnumerable Sources
{
    get { return (IEnumerable)GetValue(SourcesProperty); }
    set { SetValue(SourcesProperty, value); }
}

public static readonly DependencyProperty SourcesProperty =
    DependencyProperty.Register("Sources", typeof(IEnumerable),
        typeof(MyUserControl), new PropertyMetadata(null));

我的用户控件构造函数如下所示,我也在此处分配 Itemsource,

public MyUserControl()
{
    InitializeComponent();
}

我面临的问题是,当我将字符串列表分配给 Sources 属性时,它什么也不显示,但是如果我将 Itemsource 直接设置为该字符串列表,我可以做到这一点。 现在我可以在用户控件中设置字符串列表,但如果我在某处使用用户控件,我可以在那里设置 Itemsource,这就是我创建 IEnumerable 的原因。

这就是我使用用户控件的方式,

<local:MyUserControl x:Name="_uc"/>

public NewControl()
{
    InitializeComponent();
    _uc.Sources = MyListofString;
}

无论我尝试什么,每当我绑定或分配列表时,它都不会显示任何项目。我正确地创建了该属性,但仍然无法理解为什么它没有更新。

c# wpf xaml
1个回答
0
投票

我通过使用 Observable 集合而不是 List 解决了这个问题, 仍然不确定为什么列表不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.