我有一个wpf应用程序,它以只读模式显示Label,并在编辑模式下显示ComboBox。当用户单击“编辑”按钮时,标签将被隐藏,ComboBox将变为可见(使用BooleanToVisibilityConverter)。
ComboBox的ItemsSource设置为其查找表(通过 auditorsViewSource ),TextBox的DataContext设置为父表(通过 auditStatementsViewSource )。
这是我的xaml:
<!-- Auditor info -->
<StackPanel Orientation="Horizontal" DataContext="{StaticResource auditStatementsViewSource}">
<StackPanel Orientation="Horizontal" >
<Label Content="Auditor:" Name="lblAuditor" />
<!-- readonly data -->
<StackPanel Style="{StaticResource VisibleWhenReadOnly}">
<TextBox Name="txtAuditor" >
<TextBox.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="Auditor.GivenName"/>
<Binding Path="Auditor.Surname"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
</StackPanel>
<!-- editable data -->
<StackPanel Style="{StaticResource CollapsedWhenReadOnly}" >
<ComboBox x:Name="cboAuditor" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Surname"
ItemsSource="{Binding Source={StaticResource auditorsViewSource}}"
SelectedItem="{Binding Source=txtAuditor, Path=Auditor.Surname, Mode=TwoWay}" />
</StackPanel>
</StackPanel>
</StackPanel>
ComboBox正确显示基础(审核员)表中的项目,但显示表格中的第一条记录(根据ORDER BY子句)。如何让它最初显示当前( auditStatements )记录中的项目(即,readonly标签显示的Auditor),最好是在xaml中?
答案 0 :(得分:0)
通常情况下,Binding
属性ComboBox.SelectedItem
的效果最佳,如果您是Binding
来自集合的实际元素,该数据绑定到{{1属性。由于您不使用ComboBox.ItemsSource
集合中的实际元素,您可能需要做一些不同的事情。
可能的解决方案是让您使用ItemsSource
,SelectedValue
和SelectedValuePath
属性。有关使用此方法访问所选项目的完整详细信息,请参阅MSDN上的How to: Use SelectedValue, SelectedValuePath, and SelectedItem页面。