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

Ara*_*and 8 wpf xaml .net-4.0 observablecollection

该网站称你可以在.NET 4.0中使用

我似乎无法做到这一点,我需要什么assesmbly引用和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>
Run Code Online (Sandbox Code Playgroud)

geh*_*hho 11

ObservableCollection <T>系统程序集中定义,因此您的命名空间应为:

xmlns:coll="clr-namespace:System.Collections.ObjectModel;assembly=System"
Run Code Online (Sandbox Code Playgroud)

您可以在MSDN顶部找到该信息:

命名空间: System.Collections.ObjectModel
程序集: System(在System.dll中)
XMLNS for XAML:未映射到xmlns.

请注意,程序集在v3.5和v4.0之间已更改.在v3.5中,它是在WindowsBase程序集中定义的.但是,这是一个缺点,因为您经常希望在没有引用任何WPF程序集的情况下使用该类.所以也许这就是他们改变它的原因.

此外,您还应该查看此博客文章,其中说新的XAML功能尚未在VS中完全可用!


And*_*ord 9

我意识到这是一个老问题,但我在使用Windows应用商店应用时遇到了同样的问题.在我发现的几个问题之后,在XAML中定义这样一个集合的最简单方法是简单地创建一个子类:

namespace my.name.space {
    public class ObservableMyObjectCollection: ObservableCollection<MyObject> {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它

<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>
Run Code Online (Sandbox Code Playgroud)