如何在XAML中绑定组合框中的项目

时间:2018-03-11 14:18:57

标签: c# wpf xaml binding uwp

<TextBlock FontSize="20" Foreground="{x:Bind ????}">
    <Run Text="{x:Bind Username}"></Run>
    <Run Text=": "></Run>
    <Run Text="{x:Bind Message}"></Run>
</TextBlock>

那就是TextBlock。我的期望是当textblock获取组合框内的字符串时,它将通过该字符串设置前景

<ComboBox 
    x:Name="CBBox" 
    PlaceholderText="Color" 
    Margin="10" 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center">
    <x:String>Red</x:String>
    <x:String>Yellow</x:String>
    <x:String>Green</x:String>
    <x:String>Purple</x:String>
    <x:String>Back</x:String>
</ComboBox>

但我不知道该怎么绑定任何想法?

2 个答案:

答案 0 :(得分:0)

通常,最好的方法是将ComboBox绑定到视图模型,然后将视图模型绑定到TextBlock。

但是,只要它们位于相同的范围(页面,用户控件,模板等),就可以直接绑定它们。您必须在此使用/,而不是declare @t table (MyString VARCHAR(40) NULL) insert @t (MyString) values ('123456/'), ('53787899/'), ('68239003-21/'), ('5761289903120,7278/'), ('574738992842/478389') select * from @t ,因为您需要转换器。

您可以像这样绑定Foreground属性:

{Binding}

现在您需要添加ValueConverter,然后将其转换为画笔并将其返回。

这样的事情应该有效:

{x:Bind}

答案 1 :(得分:0)

Foreground =“{Binding ElementName = CBBox,Path = SelectedItem}”

<ComboBox 
    x:Name="CBBox" 
    PlaceholderText="Color" 
    Margin="10" 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center">
    <x:String>Red</x:String>
    <x:String>Yellow</x:String>
    <x:String>Green</x:String>
    <x:String>Purple</x:String>
    <x:String>Back</x:String>
</ComboBox>
<TextBlock FontSize="20" Foreground="{Binding ElementName=CBBox,Path=SelectedItem}">
    <Run Text="{x:Bind Username}"></Run>
    <Run Text=": "></Run>
    <Run Text="{x:Bind Message}"></Run>
</TextBlock>