由于某种原因,SelectedItem未设置为数据库中的任何字段。
XAML:
<!-- Type -->
<Label Grid.Column="0" Grid.Row="1"
Style="{StaticResource FormLabelStyle}"
Content="Type:"/>
<Border Grid.Column="1" Grid.Row="1"
Style="{StaticResource FormBorderStyle}"
Width="350">
<ComboBox x:Name="codeType" Margin="5" Padding="0"
FontSize="20" FontFamily="Arial" BorderThickness="0"
BorderBrush="Transparent" Background="White"
Text="{Binding CodType}" SelectedItem="{Binding CodType}">
<ComboBoxItem Content="C"/>
<ComboBoxItem Content="C++"/>
<ComboBoxItem Content="C#"/>
<ComboBoxItem Content="PL/SQL"/>
<ComboBoxItem Content="SQL"/>
<ComboBoxItem Content="HTML"/>
<ComboBoxItem Content="XAML"/>
<ComboBoxItem Content="Unix Shell Script"/>
</ComboBox>
</Border>
代码背后:
public ChangeCode(CodeRecord codRec)
{
_codeRecord = codRec;
this.DataContext = _codeRecord;
InitializeComponent();
}
当显示屏幕时,我想要选择当前的CodType字段。调试显示它确实不是null并且是组合框架之一。组合框没有显示任何选择。我做错了什么?
答案 0 :(得分:0)
当您创建ComboBoxItem时,内容文本是字符串,字符串类没有显示文本的属性,它可能允许您使用string.ToString()进行选择,但是当显示屏幕时它不会& #39; t具有与ComboBox项匹配的属性,并显示SelectedValue中的内容。为了解决这个问题,您必须使用属性ValueString
创建一个新类ComboBoxItemString,如下所示public class ComboBoxItemString
{
public string ValueString { get; set; }
}
然后在资源中创建ComboBoxItemString的数组(CodeTypesList),如下所示,并将其绑定到ItemsSource,然后使用DisplayMemberPath和SelectedValuePath中的poperty ValueString
<Border Grid.Column="1" Grid.Row="1"
Style="{StaticResource FormBorderStyle}"
Width="350">
<Border.Resources>
<x:Array x:Key="CodTypesList" Type="local:ComboBoxItemString">
<local:ComboBoxItemString ValueString = "C"/>
<local:ComboBoxItemString ValueString = "C++"/>
<local:ComboBoxItemString ValueString = "C#"/>
<local:ComboBoxItemString ValueString = "PL/SQL"/>
<local:ComboBoxItemString ValueString = "SQL"/>
<local:ComboBoxItemString ValueString = "HTML"/>
<local:ComboBoxItemString ValueString = "XAML"/>
<local:ComboBoxItemString ValueString = "Unix Shell Script"/>
</x:Array>
</Border.Resources>
<ComboBox x:Name="codeType" Margin="5" Padding="0"
FontSize="20" FontFamily="Arial" BorderThickness="0"
BorderBrush="Transparent" Background="White"
SelectedValue="{Binding CodType}"
ItemsSource="{StaticResource CodTypesList}"
DisplayMemberPath="ValueString" SelectedValuePath="ValueString" />
</Border>
现在,当你进入屏幕时,应该使用该属性在ComboBox中显示以前选择的值