Почему в XAML XmlDataProvider мы должны сказать «x: Key» вместо «Key»? - PullRequest
1 голос
/ 23 января 2009

Какова функция пространства имен здесь?

Я бы подумал, что в этом простом примере я мог бы поставить «Ключ» и «XData» вместо «x: Key» и «x: XData», но когда я это сделаю, будет сказано, что «Key» не найден в XmlDataProvider .

<Window x:Class="DataBindingWPF.XmlBinding"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DataBindingWPF" Height="300" Width="300"
    >
    <StackPanel>
        <StackPanel.Resources>
            <XmlDataProvider x:Key="Colors" Source="Colors.xml"  XPath="/colors"></XmlDataProvider>
            <XmlDataProvider x:Key="MoreColors" XPath="/colors">
                <x:XData>
...

Ответы [ 2 ]

7 голосов
/ 23 января 2009

Свойство «Ключ» не является фактическим свойством XmlDataProvider. Это атрибут Xaml, который находится в пространстве имен "http://schemas.microsoft.com/winfx/2006/xaml"" с префиксом "x".

StackPanel.Resources является ResourceDictionary. Чтобы добавить что-то в словарь, вам нужна пара ключ / значение. Атрибут Key является ключом для ресурса, а XmlDataProvider является значением. Это механизм, который WPF использует для уникальной идентификации ресурсов.

Вы можете изменить xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" на xmlns: ns =" ​​http://schemas.microsoft.com/winfx/2006/xaml", и тогда вы будете называть его "ns: Key" вместо "x: Key".

0 голосов
/ 23 января 2009

Вы также удалили: x из

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

так что читается

xmlns="http://schemas.microsoft.com/winfx/2006/xaml"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...