如何在wpf </t>中将Observablecollection <t>与组合框绑定

时间:2015-02-06 05:15:55

标签: c# wpf data-binding datatemplate observablecollection

我正在尝试将Observablecollection<T>ComboBox绑定。有ComboBox

Datatemplete
<ComboBox Width="150" Margin="20,0,0,5" Name="cbSelection" Height="20" 
              BorderThickness="2" BorderBrush="Black" 
              SelectedIndex="0" DataContext="{Binding AdComboBox}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1*"/>
                                <ColumnDefinition Width="1*"/>
                                <ColumnDefinition Width="1*"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Grid.Column="0" Text="{Binding XPath=LOC, Mode=OneWay}" Margin="5,0,5,0"/>
                            <TextBlock Grid.Column="1" Text="{Binding XPath=PUB, Mode=OneWay}" Margin="0,0,5,0"/>
                            <TextBlock Grid.Column="2" Text="{Binding XPath=EDI, Mode=OneWay}" Margin="0,0,5,0"/>
                        </Grid>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

但未获取ComboBox中的数据 出了什么问题 提前谢谢

1 个答案:

答案 0 :(得分:2)

使用ComboBox的ItemsSource指向ObservableCollection<T>。另外:使用Path,而不是用于绑定到XML文档的XPath。

<ComboBox Width="150" Margin="20,0,0,5" Name="cbSelection" Height="20" 
          BorderThickness="2" BorderBrush="Black" 
          ItemsSource="{Binding AdComboBox}"
          SelectedIndex="0">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*"/>
                    <ColumnDefinition Width="1*"/>
                    <ColumnDefinition Width="1*"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" 
                           Text="{Binding Path=LOC, Mode=OneWay}"
                           Margin="5,0,5,0"/>
                <TextBlock Grid.Column="1" 
                           Text="{Binding Path=PUB, Mode=OneWay}"
                           Margin="0,0,5,0"/>
                <TextBlock Grid.Column="2" 
                           Text="{Binding Path=EDI, Mode=OneWay}"
                           Margin="0,0,5,0"/>
            </Grid>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

附注:您可能希望将集合重命名为更实用的功能,而不是 AdComboBox 。例如,广告因为它不是ComboBox而是广告的集合(?)