将组合框元素绑定到数据源

本文关键字:数据源 绑定 元素 组合 | 更新日期: 2023-09-27 18:31:23

我有一个组合框,它托管一个文本块子元素。我想将组合框中的文本块绑定到名为 ResultList 的属性。我尝试了下面的代码,但它不起作用。我错过了什么?

    <ComboBox x:Name="Test" HorizontalAlignment="Left" Margin="79,42,0,0" VerticalAlignment="Top" Width="344" 
              IsEditable="True">
        <ComboBox.Resources>
            <system:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</system:Double>
        </ComboBox.Resources>
        <ComboBox.ItemContainerStyle>
            <Style TargetType="{x:Type ComboBoxItem}" >
                <Setter Property="Background" Value="#FFFFFF"/>
                <Setter Property="BorderThickness" Value="0" />
            </Style>
        </ComboBox.ItemContainerStyle>
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=ResultList, Mode=OneWay}" DataContext="{Binding Path=ResultList, Mode=OneWay}" />
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

将组合框元素绑定到数据源

因此,总结所有评论:

您需要将列表绑定到comboBoxItemsSource

<ComboBox x:Name="Test" ItemsSrouce="{Binding ResultList}" ....>

并将ItemTemplate中的TextBlock设置为如下所示:

<TextBlock Text="{Binding Path=Age}" ..../> 
<TextBlock Text="{Binding Path=Name}" ..../> 
不能将

DataContext Text 属性设置为相同的值:

"{Binding Path=ResultList, Mode=OneWay}" 

你可以试试这个:

<TextBlock Text="{Binding, Mode=OneWay}" DataContext="{Binding Path=ResultList}" />

但这可能更好:

<TextBlock Text="{Binding Path=ResultList, Mode=OneWay}" />

当然,当您没有提供所有必要的信息时,很难回答,例如评论中提出的问题。