WPF - 用户控件中 DataGrid 的 ComboBox 列帮助

发布于 2024-08-08 05:32:06 字数 1190 浏览 7 评论 0原文

我有一个 MainWindow.xaml (由 TabControl 组成)和一些 UserControls (加载到 TabItems 中)。 一个特定的 UserControl 具有带有自定义列(不是自动生成的)的 WPFToolkit DataGrid。其中一列是 ComboBox 类型的列,它绑定到我的模型中名为“Status”的属性。我还有一个名为“FollowUpStatus”的状态枚举。此 ComboBox 列声明如下:

<WpfTK:DataGridComboBoxColumn 
   Header="Status" 
   SelectedItemBinding="{Binding Status}" 
   ItemsSource="{Binding Source={StaticResource FollowUpStatusProvider}}" />

FollowUpStatusProvider 是一个在应用程序资源级别声明如下的 ObjectDataProvider - 对 MainWindow 和所有 UserControl 均可见:

<ObjectDataProvider x:Key="FollowUpStatusProvider"
   MethodName="GetValues" ObjectType="{x:Type DAL:FollowUpStatus}">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="DAL:FollowUpStatus"/>
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

它在运行时运行良好。在设计时,设计者可以从 MyUserControl.xaml 渲染它。但我的 MainWindow 抱怨它无法“创建“MyUserControl”类型的实例”。导致 MainWindow 阻塞的代码是对 ComboBox 列中的 ItemsSource 的分配:

... ItemsSource="{Binding Source={StaticResource FollowUpStatusProvider}}" ...

如果我删除此分配,则一切都会按预期工作。

有人可以帮助我理解为什么以及如何解决它吗?

谢谢!

I have a MainWindow.xaml (which consists of a TabControl) and a few UserControls (which are loaded into the TabItems).
One particular UserControl has a WPFToolkit DataGrid with custom columns (not auto-generated). One of these columns is a ComboBox-type column that binds to a property in my model called "Status". I also have an Enum for Status called "FollowUpStatus". This ComboBox column is declared as follows:

<WpfTK:DataGridComboBoxColumn 
   Header="Status" 
   SelectedItemBinding="{Binding Status}" 
   ItemsSource="{Binding Source={StaticResource FollowUpStatusProvider}}" />

The FollowUpStatusProvider is an ObjectDataProvider declared as follows at the application resources level - visible to both MainWindow and all UserControls:

<ObjectDataProvider x:Key="FollowUpStatusProvider"
   MethodName="GetValues" ObjectType="{x:Type DAL:FollowUpStatus}">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="DAL:FollowUpStatus"/>
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

It all works fine at run-time. At design time, from MyUserControl.xaml, the designer renders it ok. But my MainWindow complains it cannot "create an instance of type 'MyUserControl'". The code that's causing MainWindow to choke is the assignment to ItemsSource in the ComboBox column:

... ItemsSource="{Binding Source={StaticResource FollowUpStatusProvider}}" ...

If I remove this assignment, it all works as expected.

Can somebody help me understand why and how to fix it?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灼痛 2024-08-15 05:32:06

你尝试过吗

... ItemsSource="{StaticResource FollowUpStatusProvider}"

Have you tried

... ItemsSource="{StaticResource FollowUpStatusProvider}"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文