【问题标题】:How to bind Observablecollection<T> with combobox in wpf如何在 wpf 中将 Observablecollection<T> 与组合框绑定
【发布时间】:2015-02-06 05:15:55
【问题描述】:

我正在尝试将Observablecollection&lt;T&gt;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中的数据 出了什么问题 在此先感谢

【问题讨论】:

  • 绑定 Combobox.ItemsSource 属性
  • 你应该绑定到 Path 而不是 XPath

标签: c# wpf data-binding datatemplate observablecollection


【解决方案1】:

使用 ComboBox 的 ItemsSource 指向 ObservableCollection&lt;T&gt;。另外:使用 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。例如,Ads 因为它不是 ComboBox,而是 Ads 的集合(?)

【讨论】:

    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2016-09-01
    • 2017-02-08
    • 1970-01-01
    • 2012-05-30
    • 2012-11-12
    相关资源
    最近更新 更多