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" />