WPF数据绑定

Ale*_*x F 1 data-binding wpf

请考虑以下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属性.但是代码中没有任何内容指向这条路径.

Ste*_*rex 5

这是有效的,因为有一个内置的转换,允许WPF从a转换String为a Brush(这是Background属性的必需类型).

如果您查看MSDN文档Brush,可以看到它使用TypeConverter指定类型转换器的属性进行修饰BrushConverter.

有关类型转换器的一般信息,请阅读本文