WPF: Xaml, создайте наблюдаемую коллекцию <object>в xaml в .NET 4.0 - PullRequest
8 голосов
/ 23 апреля 2010

веб-сайт говорит, что вы можете в .NET 4.0

Кажется, я не могу этого сделать, какие ссылки на ассемблеры и 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>

Ответы [ 2 ]

11 голосов
/ 23 апреля 2010

ObservableCollection определено в сборке System , поэтому ваше пространство имен должно выглядеть так:

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

Вы можете найти эту информацию в MSDN вверху, где написано:

Пространство имен: System.Collections.ObjectModel
Сборка: Система (в System.dll)
XMLNS для XAML: Не сопоставлено с xmlns.

Обратите внимание, что сборка изменилась между v3.5 и v4.0 . В версии 3.5 это было определено в сборке WindowsBase. Однако это было недостатком, поскольку вы часто хотели бы использовать класс без каких-либо ссылок на сборки WPF. Так что, возможно, именно поэтому они изменили это.

Кроме того, вам также следует проверить это сообщение в блоге , в котором говорится, что новые функции XAML еще не полностью доступны в VS!

9 голосов
/ 25 февраля 2014

Я понимаю, что это старый вопрос, но я только столкнулся с той же проблемой, работая над приложением для Магазина 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>
...