繁体   English   中英

ComboBox始终填充System.Data.DataRowView

[英]ComboBox always filling with System.Data.DataRowView

下面的代码使用公司名称和地址填充ComboBox下拉菜单,问题是,一旦我实际从下拉菜单中选择一个值,它始终只会在文本框中填充“ System.Data.DataRowView”

有人知道怎么修这个东西吗?

当前实施

<StackPanel Orientation="Horizontal" Margin="0,10,0,0" DataContext="{Binding parties}">
    <TextBlock Text="Supplier" Style="{StaticResource tabTextBlock}"/>
    <ComboBox ItemsSource="{Binding Vwr.Table.Tbl, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
      x:Name="Supplier"
      SelectedIndex="{Binding Vwr.Table.GridSelIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
      SelectedItem="{Binding Vwr.Table.Vals[1].Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
      IsEditable="True" 

            Style="{StaticResource tabTextBox}"
      >
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{} {0} , {1}">
                            <Binding Path="Name"/>
                            <Binding Path="Address"/>
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>

    </ComboBox>
</StackPanel>

您可以将TextSearch.TextPath属性设置为DataTable中列的名称:

<ComboBox x:Name="Supplier" TextSearch.TextPath="Name" ... />

如果要同时显示所选行的NameAddress ,则应在DataTable添加一列:

dataTable.Columns.Add(new DataColumn("Combined", typeof(string), "Name + ', ' + Address"));

...并且还将DisplayMemberPath属性设置为此列的名称:

<ComboBox ItemsSource="{Binding Vwr.Table.Tbl, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      x:Name="Supplier"
                      SelectedIndex="{Binding Vwr.Table.GridSelIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      SelectedItem="{Binding Vwr.Table.Vals[1].Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      IsEditable="True" 
                      Style="{StaticResource tabTextBox}"
                      DisplayMemberPath="Combined" TextSearch.TextPath="Combined">
</ComboBox>

使用ItemTemplate不是解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM