WPF привязка данных - PullRequest
       12

WPF привязка данных

1 голос
/ 15 ноября 2010

Рассмотрим следующий код XAML:

    <StackPanel>
        <ListBox x:Name="lbColor">
            <ListBoxItem Content="Blue"/>
            <ListBoxItem Content="Green"/>
            <ListBoxItem Content="Yellow"/>
        </ListBox>
        <TextBlock>
            <TextBlock.Text>
                <Binding ElementName="lbColor" Path="SelectedItem.Content"/>
            </TextBlock.Text>
            <TextBlock.Background>
                <Binding ElementName="lbColor" Path="SelectedItem.Content"/>
            </TextBlock.Background>
        </TextBlock>
    </StackPanel>

Я понимаю, как работает привязка свойства Text.Внутренне это преобразуется во что-то вроде:

textBlock.Text = lbColor.SelectedItem.Content;

Но как фон связан с тем же источником?Этот код:

textBlock.Background = lbColor.SelectedItem.Content;

неверен.Как это может работать?Кстати, он работает и показывает правильный цвет фона.

Единственный способ, которым я вижу, - это получить свойство System.Windows.Media.Colors с заданным именем, создать из него SolidColorBrush и присвоить свойству Background.Но в коде нет ничего, что указывало бы на этот путь.

1 Ответ

5 голосов
/ 15 ноября 2010

Это работает, потому что есть встроенное преобразование, которое позволяет WPF преобразовывать из String в Brush (который является обязательным типом свойства Background).

Если вы посмотритев документации MSDN для Brush вы можете видеть, что он украшен атрибутом TypeConverter, который определяет преобразователь типа BrushConverter.

Для получения общей информации о преобразователях типов прочитайте эту статью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...