Пользовательский элемент управления Silverlight по умолчанию xmlns - PullRequest
2 голосов
/ 25 января 2011

Можно ли в Silverlight задать имя xmlns по умолчанию для пользовательского элемента управления?

По умолчанию каждый раз, когда я перетаскиваю один из моих пользовательских контроллеров в окне, сборка и элемент управленияавтоматически добавляется в XAML:

...
xmlns:my="clr-namespace:MyAssemblyName;assembly=MyAssemblyName"
...
<my:MyCustomControl Name="whatever"/>

Все работает нормально, за исключением того, что я хотел бы заменить «мое» пространство имен чем-то другим (MyAssemblyName) без редактирования XAML вручную.

1 Ответ

4 голосов
/ 26 января 2011

Вы должны иметь возможность контролировать префикс, используемый с атрибутом сборки XmlnsPrefixAttribute. Обычно вы помещаете это в AssemblyInfo.cs, находящийся в папке Properties проекта. Пока вы занимаетесь этим, вы также можете добавить XmlnsDefinitionAttribute, чтобы отделить пространство имен Xaml от сборки и пространство имен .NET.

 [assembly: XmlnsDefinition("http://schemas.yourorganisation.com/controls", "MyAssemblyName")]
 [assembly: XmlnsPrefix("http://schemas.yourorganisation.com/controls", "myc")]

Теперь, когда вы удаляете элемент управления из панели инструментов, вы должны получить: -

 ...
 xmlns:myc="http://schemas.yourorganisation.com/controls"
 ...

 <myc:MyCustomControl Name="whatever" />

Теперь вы можете создавать несколько пространств имен .NET, содержащих элементы управления, и добавлять несколько записей XmlnsDefinition в AssemblyInfo, отображая их все в одно пространство имен XML и, следовательно, в один и тот же префикс. Вы даже можете создать несколько проектов библиотек элементов управления, отображаемых в одно и то же пространство имен XML.

...