WPF:Xaml,在< object>.NET 4.0中的xaml中创建可观察集合

k5ifujac  于 2022-12-07  发布在  .NET
关注(0)|答案(2)|浏览(149)

the web site表示您可以在. NET 4.0中
我似乎不能做到这一点,我需要什么assembly引用和xmlns的
以下内容不起作用

xmlns:coll="clr-namespace:System.Collections.ObjectModel;assembly=mscorlib"

<coll:ObservableCollection x:TypeArguments="x:Object">
    <MenuItem Command="ApplicationCommands.Cut"/>
    <MenuItem Command="ApplicationCommands.Copy"/>
    <MenuItem Command="ApplicationCommands.Paste"/>
</coll:ObservableCollection>
pbgvytdp

pbgvytdp1#

ObservableCollection是在System组件中定义的,因此您的命名空间应该是:

xmlns:coll="clr-namespace:System.Collections.ObjectModel;assembly=System"

您可以在MSDN的顶部找到该信息,其中显示:

**命名空间:**系统.集合.对象模型
**程序集:**系统(在System.dll中)
**XAML的XMLNS:**未Map到xmlns。

请注意,* 程序集在v3.5和v4.0* 之间发生了变化。在v3.5中,它是在WindowsBase程序集中定义的。但是,这是一个缺点,因为您经常希望在不引用任何WPF程序集的情况下使用该类。因此,这可能是他们更改它的原因。
此外,您还应该检查this blog post,它表示新的XAML特性在VS中还不完全可用!

vuktfyat

vuktfyat2#

我在开发Windows应用商店应用程序时遇到了同样的问题。在遇到几个问题后,我发现在XAML中定义这样一个集合最简单的方法是创建一个子类:

namespace my.name.space {
    public class ObservableMyObjectCollection: ObservableCollection<MyObject> {
    }
}

然后像这样使用它

<local:ObservableMyObjectCollection
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:my.name.space">

   <MenuItem Command="ApplicationCommands.Cut"/>
   <MenuItem Command="ApplicationCommands.Copy"/>
   <MenuItem Command="ApplicationCommands.Paste"/>

<local:ObservableMyObjectCollection>

相关问题