[英]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" ... />
如果要同时显示所选行的Name
和Address
,则应在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.