Почему привязка элемента XAML к xml работает только частично? - PullRequest
0 голосов
/ 23 января 2009

В приведенном ниже коде ListBox заполняется именами цветов из XML-файла, но эти имена странным образом не появляются в TextBox.

Однако, если вы связываете текстовое поле со статическим «lbColor2», эти имена появляются.

Так что может отличаться в именах, когда они приходят из источника XML, что делает их не передаваемыми?

<StackPanel>
    <StackPanel.Resources>
        <XmlDataProvider x:Key="ExternalColors" Source="App_Data/main.xml" XPath="/colors"/>
    </StackPanel.Resources>
    <TextBlock Text="Colors:"/>
    <ListBox Name="lbColor" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Source={StaticResource ExternalColors}, XPath=color/@name}"/>
    <ListBox Name="lbColor2">
        <ListBoxItem>Red</ListBoxItem>
        <ListBoxItem>Orange</ListBoxItem>
        <ListBoxItem>Cyan</ListBoxItem>
    </ListBox>
    <TextBlock Text="You selected color:"/>
    <TextBox
        Text="{Binding ElementName=lbColor, Path=SelectedItem.Content}"
        >
    </TextBox>
</StackPanel>

Вот файл XML:

<?xml version="1.0" encoding="utf-8" ?>
<colors>
  <color name="Pink"/>
  <color name="Cyan"/>
  <color name="LightBlue"/>
  <color name="LightGreen"/>
  <color name="Another One"/>
</colors>

1 Ответ

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

Вы связали TextBox с SelectedItem.Content, но XmlAttribute не имеет свойства с именем Content. Измените это, и все будет в порядке:

<TextBox Text="{Binding ElementName=lbColor, Path=SelectedItem.Value}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...