Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ListView中的Wpf组合框绑定_Wpf_Data Binding_Listview_Combobox - Fatal编程技术网

ListView中的Wpf组合框绑定

ListView中的Wpf组合框绑定,wpf,data-binding,listview,combobox,Wpf,Data Binding,Listview,Combobox,我对listview中组合框的数据绑定有问题。 我有两门课: 交易 基质 事务具有基底属性,事务a保存在数据库中。在程序开始时,我希望将所有事务作为列表加载,并在ListView中显示它们。基板的每种可能性都应显示在组合框中,在组合框中选择实际基板 我试过这样做 XAML 代码隐藏 public partial class UCInternTransaction : UserControl { #region Attribute private BsCBTTransac

我对listview中组合框的数据绑定有问题。 我有两门课:

  • 交易
  • 基质
事务具有基底属性,事务a保存在数据库中。在程序开始时,我希望将所有事务作为列表加载,并在ListView中显示它们。基板的每种可能性都应显示在组合框中,在组合框中选择实际基板

我试过这样做 XAML


代码隐藏

public partial class UCInternTransaction : UserControl
{
    #region Attribute
    private BsCBTTransactionController mTransactionController;
    private ObservableCollection<BsCBTSubstrate> mSubstrateList;
    #endregion

    public UCInternTransaction()
    {

        InitializeComponent();

        //Load Transactions
        this.mTransactionController = WpfBioGas.Core.BsCAppFactory.getInstance().getCBTTransactionController();
        this.mTransactionController.loadTransactions();
        this.DataContext = this.mTransactionController.TransactionList;

        loadData();
    }

    private void loadData()
    {
        //Load Substrate and bind to CBSubstrate
        this.mSubstrateList = new ObservableCollection<BsCBTSubstrate>();
        foreach (BsCBTSubstrate sub in WpfBioGas.Core.BsCAppFactory.getInstance().getBTFacade().BsBTSubstrate.loadAll())
        {
            this.mSubstrateList.Add(sub);
        }
    }

    public ObservableCollection<BsCBTSubstrate> SubstrateList
    {
        get { return this.mSubstrateList; }
    }
}
公共部分类UCINTERTRANSACTION:UserControl
{
#区域属性
专用BsCBTTransactionController mTransactionController;
私人可观察收集mSubstrateList;
#端区
公共UCINTERTRANSACTION()
{
初始化组件();
//加载事务
this.mTransactionController=WpfBioGas.Core.bscapfactory.getInstance().getCBTTransactionController();
this.mTransactionController.loadTransactions();
this.DataContext=this.mTransactionController.TransactionList;
loadData();
}
私有void loadData()
{
//加载基底并结合到CBS基底上
this.mSubstrateList=新的ObservableCollection();
foreach(WpfBioGas.Core.bscapfactory.getInstance().getBTFacade().bsbtSubscriber.loadAll()中的BSCBtSubscriber子对象)
{
this.mSubstrateList.Add(sub);
}
}
公共可观察收集子速率列表
{
获取{返回this.mSubstrateList;}
}
}

问题是列表的所有条目都显示在listview中,对于每一行,基板的所有可能性都在组合框中。但仅对Listview的第一行选择实际基板。

您的组合框应在SelectedValue而不是SelectedItem上使用绑定

仅根据您在文章中展示的代码片段提供修复有点困难,但下面是一个使用两个内联XML数据源的现成示例:

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <XmlDataProvider x:Key="CharacterData">
      <x:XData>
        <Data xmlns="">
          <Character First="Bart" Last="Simpson" Gender="M"/>
          <Character First="Homer" Last="Simpson" Gender="M"/>
          <Character First="Lisa" Last="Simpson" Gender="F"/>
          <Character First="Maggie" Last="Simpson" Gender="F"/>
          <Character First="Marge" Last="Simpson" Gender="F"/>
        </Data>
      </x:XData>
    </XmlDataProvider>
    <XmlDataProvider x:Key="GenderData">
      <x:XData>
        <Data xmlns="">
          <Gender ID="F" Description="Female" />
          <Gender ID="M" Description="Male" />
        </Data>
      </x:XData>
    </XmlDataProvider>
  </Page.Resources>
  <ListView ItemsSource="{Binding Source={StaticResource CharacterData}, XPath=Data/Character}">
    <ListView.View>
      <GridView>
        <GridViewColumn Header="Last Name" 
            DisplayMemberBinding="{Binding XPath=@First}" />
        <GridViewColumn Header="Gender">
          <GridViewColumn.CellTemplate>
            <DataTemplate>
              <ComboBox Width="75" SelectedValue="{Binding XPath=@Gender}" 
                  DisplayMemberPath="@Description" SelectedValuePath="@ID"
                  ItemsSource="{Binding Source={StaticResource GenderData}, XPath=Data/Gender}" />
            </DataTemplate>
          </GridViewColumn.CellTemplate>
        </GridViewColumn>
      </GridView>
    </ListView.View>
  </ListView>
</Page>

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <XmlDataProvider x:Key="CharacterData">
      <x:XData>
        <Data xmlns="">
          <Character First="Bart" Last="Simpson" Gender="M"/>
          <Character First="Homer" Last="Simpson" Gender="M"/>
          <Character First="Lisa" Last="Simpson" Gender="F"/>
          <Character First="Maggie" Last="Simpson" Gender="F"/>
          <Character First="Marge" Last="Simpson" Gender="F"/>
        </Data>
      </x:XData>
    </XmlDataProvider>
    <XmlDataProvider x:Key="GenderData">
      <x:XData>
        <Data xmlns="">
          <Gender ID="F" Description="Female" />
          <Gender ID="M" Description="Male" />
        </Data>
      </x:XData>
    </XmlDataProvider>
  </Page.Resources>
  <ListView ItemsSource="{Binding Source={StaticResource CharacterData}, XPath=Data/Character}">
    <ListView.View>
      <GridView>
        <GridViewColumn Header="Last Name" 
            DisplayMemberBinding="{Binding XPath=@First}" />
        <GridViewColumn Header="Gender">
          <GridViewColumn.CellTemplate>
            <DataTemplate>
              <ComboBox Width="75" SelectedValue="{Binding XPath=@Gender}" 
                  DisplayMemberPath="@Description" SelectedValuePath="@ID"
                  ItemsSource="{Binding Source={StaticResource GenderData}, XPath=Data/Gender}" />
            </DataTemplate>
          </GridViewColumn.CellTemplate>
        </GridViewColumn>
      </GridView>
    </ListView.View>
  </ListView>
</Page>