我是WPF的新手,我正在尝试使用组合框进行数据绑定。我有一个名为FolderList的类,它基本上包装了FileSystemWatcher实例。它有一个名为Folders的属性,它返回文件夹名称及其完整路径的字典。
然后,对于我的WPF窗口的类,它包含一个名为FolderWatcher的FolderList实例,该实例在构造函数中配置。我想在一个特定的FolderList实例中将组合框数据绑定到字典中。
我找到了存在数据对象的静态实例或通过XAML创建它们的示例,但我无法弄清楚如何绑定到特定实例。
如果在XAML或C#中完成,我不会选择。我基本上已经使用ObjectDataProvider获得了这一点。
<Window.Resources>
<ObjectDataProvider x:Key="ProjectNames"
ObjectType="{x:Type local:FolderList}"
/>
</Window.Resources>
这是我想要数据绑定的组合框。这不会产生任何错误,但也不会填充。我知道我错过了ObjectDataProvider中的一些主要内容,但我只是不知道它是什么。
<ComboBox Name="ProjectCombo" MinWidth="100" ItemsSource="{Binding Source={StaticResource ProjectNames}, Path=Folders}" />
答案 0 :(得分:1)
此处不需要ObjectDataProvider
。只需在ItemsSource
的构造函数中直接设置ComboBox
的{{1}},即可初始化Window
的实例:
FolderList
另一种选择是将public MyWindow()
{
InitializeComponent();
FolderWatcher = new FolderList(...);
ProjectCombo.ItemsSource = FolderWatcher.Folders;
}
的实例设置为窗口的FolderList
,然后使用绑定来设置DataContext
ComboBox`:
ItemsSource of the
public MyWindow()
{
InitializeComponent();
FolderWatcher = new FolderList(...);
DataContext = FolderWatcher;
我建议你研究一下MVVM pattern。如果您根据该模式设计了应用程序,则视图模型实例将作为视图的<ComboBox Name="ProjectCombo" MinWidth="100" ItemsSource="{Binding Folders}" />
,并且视图模型将公开您可以绑定的属性。