powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF
18 сообщений из 18, страница 1 из 1
WPF
    #35840824
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сел читать Мэтью Макдональда . Не могу понять то, что он пишет о пространствах имён.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<Window x:Class="WpfTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        
    </Grid>
</Window>
Речь о
Код: plaintext
1.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Мэтью пишет, что увидев указание на пространство "http://schemas.microsoft.com/winfx/2006/xaml/presentation" синтаксический анализатор XAML сразу поймет, что Window это System.Windows.Window, а Greed - это System.Windows.Controls.Grid.

Не могу понять в этом вот что: как анализатор XAML узнает, что указанному пространству "http://schemas.microsoft.com/winfx/2006/xaml/presentation" соответсвует именно "System.Windows"?

Если я, к примеру, захочу создать свой некий контрол, который в dll-библиотеке будет размещаться в пространстве Bushman.WPF, и в XML-коде в качестве нэймспейса укажу http:\\Bushman.World.Hello.MyFriends, то как анализатор XAML узнает из этой строки, что созданный мною контрол следует искать именно в пространстве Bushman.WPF? Где прописывается связь/маппинг/соответствие что ли... ?

Еще не уловил такого момента: пространство System.Windows - понятно, там лежат WPF-классы...
А xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - это не понял... Не пойму, что за пространство XML... Предположение - в нем каким-то макаром описывается синтаксис XML. Но не знаю, верно ли предполагаю... Всё как-то пока не ясно и туманно для меня...

Это азы, в них нужно въехать, чтобы можно было читать далее...
...
Рейтинг: 0 / 0
WPF
    #35840841
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumМэтью пишет, что увидев указание на пространство "http://schemas.microsoft.com/winfx/2006/xaml/presentation" синтаксический анализатор XAML сразу поймет, что Window это System.Windows.Window, а Greed - это System.Windows.Controls.Grid.А должен бы понять, что Greed - это "жадность"
По сабжу - не знаю :(
...
Рейтинг: 0 / 0
WPF
    #35841007
alexdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, так и описываешь неймспейс. Напр.:
Код: plaintext
xmlns:CC="clr-namespace:Microsoft.Windows.SdkViewer.Controls"
где после clr-namespace: указывается неймспейс для твоих кастом контролов.
А дальше описываешь в XAML свои контролы напр., так
Код: plaintext
<CC:TearOffPanel />
где TearOffPanel - название класса твоего кастом контрола.
...
Рейтинг: 0 / 0
WPF
    #35841112
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял нифига.
...
Рейтинг: 0 / 0
WPF
    #35841261
alexdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что конкретно непонятно?
Если твой контрол в неймспейсе Bushman.WPF, то в XAML пишешь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<Window x:Class="WpfTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:CC="clr-namespace:Bushman.WPF"
    Title="Window1" Height="300" Width="300">
    <Grid>
         <CC:YourControlName />
    </Grid>
</Window>
...
Рейтинг: 0 / 0
WPF
    #35841316
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexdrА что конкретно непонятно?
Если твой контрол в неймспейсе Bushman.WPF, то в XAML пишешь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<Window x:Class="WpfTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:CC="clr-namespace:Bushman.WPF"
    Title="Window1" Height="300" Width="300">
    <Grid>
         <CC:YourControlName />
    </Grid>
</Window>

не понял я вот что: по согласованию принято в xaml наименования нэймспейсам давать в виде, похожем на url. Мак-Дональд написал о xmlns и о xmlns:x. Варианта с xmlns:CC у него нет (во всяком случае, в том месте, где он объясняет насчет нэймспейсов в начале книги").
Как xaml-анализатор узнает, что xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" означает искать классы в System.Windows?
почему тогда майкрософт не пишет, согласно твоей логике, так:
xmlns:CC="clr-namespace:System.Windows", а пишет xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"?
Т.е. я хочу сказать, что по-моему ты ошибаешься.
...
Рейтинг: 0 / 0
WPF
    #35841327
Фотография goodbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору наверно непонятно, как "за-за какого-то неймспейса всё работает, всё шевелиться")))
XAML - тот же самый XML))
Если вы разбирались во всевозможных форматах xml(например xsd) то должно быть понятно. Xml стравливают анализатору, который должен понять для чего этот xml и c чем он работает. Вот для этого и пишут NS.
Если кратенько, то так.

2600 Hz
...
Рейтинг: 0 / 0
WPF
    #35841344
Фотография goodbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum
Еще не уловил такого момента: пространство System.Windows - понятно, там лежат WPF-классы...
А xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - это не понял...

Это а-ля global::
Все остальные неймспейса(если указаны) пишутся с префиксом
...
Рейтинг: 0 / 0
WPF
    #35841351
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbitАвтору наверно непонятно, как "за-за какого-то неймспейса всё работает, всё шевелиться")))
не верно. Автор прекрасно понимает, что нэймспейсы нужно указывать. Автору не понятно, как установить соотверствие между придуманным им url-нэймспейсом, записанным им в xaml-код и реальным нэймспэйсом в .net-библиотеке. Мне ответили, что так:
Код: plaintext
xmlns:CC="clr-namespace:Microsoft.Windows.SdkViewer.Controls"
т.е. существует некий префикс СС? и это является своего рода маппингом/проекцией url-нэймспейса на реальный .net-нэймспейс? Мак-Дональд не написал об этом.
...
Рейтинг: 0 / 0
WPF
    #35841387
Фотография goodbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumне верно. Автор прекрасно понимает, что нэймспейсы нужно указывать. Автору не понятно, как установить соотверствие между придуманным им url-нэймспейсом, записанным им в xaml-код и реальным нэймспэйсом в .net-библиотеке.
Вы сами себе противоречите.
Никаких реальных/нереальных нет. Если брать объекты в составе FW. То да, они стандартизированы, и не для того, чтобы ввести в заблуждение вас, а для того, чтобы ясно указать .netFW какие классы необходимо загрузить. Если у вас есть свой собственный класс, то для того, чтобы его использовать вам необходимо его зарегистрировать.
Кратенько тут
Compositum
Мне ответили, что так:
Код: plaintext
xmlns:CC="clr-namespace:Microsoft.Windows.SdkViewer.Controls"
т.е. существует некий префикс СС?
да хоть <Compositum:Button...
Хотя, вроде как там есть ограничение на длину префикса, но теории это не противоречит. А на практике такие длинные не писал.
...
Рейтинг: 0 / 0
WPF
    #35841436
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbit,

спасибо, гляну линк на досуге.
...
Рейтинг: 0 / 0
WPF
    #35841493
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumКак xaml-анализатор узнает, что xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" означает искать классы в System.Windows?ему об этом бил гейц рассказал. Пространство имён хамла выглядит так, следуя принятым практикам составления пространств имён в приложениях хмл. Нестандартным подходом является как раз вариант с clr-namespace:. Вернее не нестандартным, хмл-стандарту-то пофиг, как неймспейс формируется.
...
Рейтинг: 0 / 0
WPF
    #35843419
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expression blend и visual studio. у студии возможности такие же как у блэнда?
...
Рейтинг: 0 / 0
WPF
    #35843431
Фотография SQL_Lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumexpression blend и visual studio. у студии возможности такие же как у блэнда?

У блэнда их в разы меньше.
Блэнд - вообще инструмент для дизайнеров, для облегчения интеграции с программерами.
...
Рейтинг: 0 / 0
WPF
    #35843490
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL_Lamer
Блэнд - вообще инструмент для дизайнеров, для облегчения интеграции с программерами.
Я знаю, для чего предназначен блэнд =).

SQL_Lamer
У блэнда их в разы меньше.

Ясненько, спасибо.
...
Рейтинг: 0 / 0
WPF
    #35843493
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А есть у блэнда фичи, которых нет у студии?
...
Рейтинг: 0 / 0
WPF
    #35846809
lamox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum,

(если ещё актуально)

Если посмотреть внутри PresentationFramework.dll, можно увидеть много атрибутов уровня сборки примерно такого содержания:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Documents")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Shapes")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/netfx/2007/xaml/presentation", "System.Windows.Controls.Primitives")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Data")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls.Primitives")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Media.Animation")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Input")]

Попробуй просто добавить в свою сборку такой же атрибут, который будет мапить xml-namespace на CLR-namespace.
...
Рейтинг: 0 / 0
WPF
    #35847060
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lamox,

Спасибо, это именно тот ответ, который мне был нужен.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]