Wpf 将列表绑定到列表框

Wpf 将列表绑定到列表框,wpf,xaml,binding,listbox,Wpf,Xaml,Binding,Listbox,我的列表框未显示项目。项目位于列表中 以下是xaml: <DockPanel Margin="10,10,10,10"> <DockPanel.Resources> <local:MyErrors x:Key="myErrors"/> </DockPanel.Resources> <ListBox DockPanel.Dock="Top" ItemsSource="{StaticResource myE

我的列表框未显示项目。项目位于
列表中

以下是xaml:

<DockPanel Margin="10,10,10,10">
    <DockPanel.Resources>
        <local:MyErrors x:Key="myErrors"/>
    </DockPanel.Resources>
    <ListBox DockPanel.Dock="Top" ItemsSource="{StaticResource myErrors}" Height="300" Width="250" Margin="0,5,0,10" 
        />

    <StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Center" VerticalAlignment="Bottom" Orientation="Horizontal">
        <Button Height="28" Click="buttonOK_Click" Margin="10,10,10,10" IsDefault="True" Name="buttonOK" Width="75">OK</Button>
        <Button Height="28" Click="buttonCancel_Click" Margin="10,10,10,10" IsCancel="True" Name="buttonCancel" Width="75">Cancel</Button>
    </StackPanel>

</DockPanel>
然后我在对话框中有一个自动属性。这是类型和名称为MyErrors的
列表
派生类

        public MyErrors MyErrors
    {
        get;
        set;
    }

enter code here

您应该看看如何使用存储错误字符串

表示动态数据集合,该集合在添加、删除项或刷新整个列表时提供通知

这将实现和接口,用于通知客户端(在本例中为UI)属性和集合已更改


如果它们在程序的生命周期内不发生变化,这似乎有点过头了,但它完成了使UI最初更新所需的所有连接。

您的资源指向一个新的MyErrors,而不是对话框中定义的MyErrors

只需去掉参考资料部分并直接绑定到MyErrors:

<ListBox DockPanel.Dock="Top" ItemsSource="{Binding MyErrors}" Height="300" Width="250" Margin="0,5,0,10" />


MyErrors类是否从IEnumerable派生?它是从list派生的。我只想显示错误字符串的只读列表。它们在显示时不会被任何其他源或函数添加到中。@tim-您可以直接使用
INotifyPropertyChanged
界面。按照链接查看示例用法。但是,您只能实现
ObservableCollection
已经实现的功能。我尝试将对话框的属性更改为ObservableCollection,并将分配更改为以下内容,但仍然没有显示任何内容。dlg.MyErrors=newsystem.Collections.ObjectModel.ObservableCollection(myOtherClass.MyErrors);试过了,还是不行。有什么我可以尝试排除的吗。itemsource是否自动默认为项上的ToString?您还需要为绑定指定一个源。默认情况下,它使用继承的DataContext,我假设您的代码示例中的DataContext可能为null。改为使用此绑定显式地将源设置为控件本身:{Binding Path=MyErrors,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type local:DialogErrors}}
<ListBox DockPanel.Dock="Top" ItemsSource="{Binding MyErrors}" Height="300" Width="250" Margin="0,5,0,10" />