C# 在组合框中的XAML中设置默认值

C# 在组合框中的XAML中设置默认值,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试为组合框设置默认值。我有创建代码表的脚本,因此不能这样编写代码: <StackPanel> <ComboBox SelectedValue="CA"> <ComboBoxItem Tag="CO">Colorado</ComboBoxItem> <ComboBoxItem Tag="CA">California</ComboBoxItem> <ComboBoxItem Tag="NM"

我正在尝试为组合框设置默认值。我有创建代码表的脚本,因此不能这样编写代码:

<StackPanel>
<ComboBox SelectedValue="CA">
    <ComboBoxItem Tag="CO">Colorado</ComboBoxItem>
    <ComboBoxItem Tag="CA">California</ComboBoxItem>
    <ComboBoxItem Tag="NM">New Mexico</ComboBoxItem>
</ComboBox>
</StackPanel>

科罗拉多州
加利福尼亚
新墨西哥州
相反,我在XAML中有一些代码:

 <StackPanel HorizontalAlignment="Left" Margin="10,5,0,0" Name="PersonStackPanel" Height="60">
            <Label VerticalContentAlignment="Top" FontWeight="Normal" Height="28" HorizontalAlignment="Left">Person</Label>
            <ComboBox Name="PersonComboBox"  Width="312" Props.CodeProvider="MASTCODE.TYPE.ARRA" DisplayMemberPath="NAME" Tag="AA" IsSelected="True" SelectedValuePath="CODE" SelectedItem="{Binding Path=PERSON}"/>
 <StackPanel>

我原以为Tag=“AA”IsSelected=“True”会起作用,但事实并非如此。

组合框中显示的任何值都必须作为选择项出现

尝试:



编辑:添加引号

在ViewModel中将Person设置为适当的值(如果需要默认项,可能是构造函数)

并将绑定更改为

SelectedItem="{Binding Path=PERSON, Mode=TwoWay}"
您正在使用

SelectedValuePath="CODE"

因此,在这种情况下,尝试设置SelectedValue而不是SelectedItem

谢谢各位,我认为这样做可以:

    <ComboBox Name="PersonComboBox"  Width="312" SelectedItem="{Binding Path=PERSON}" SelectedIndex="0" >
                <ComboBoxItem Tag="AA">Adam</ComboBoxItem>
            </ComboBox>

亚当

我想我困惑的是,因为我有一个创建combobox项的脚本,所以我不需要在XAML中创建它。但只要我能将数据保存到“Person”列中,我就可以使用它。

为什么在您的第二个代码示例中使用Tag而不是SelectedValue?Person是否存储在ViewModel中?@RandRandom我以为它会从脚本中获取标记。@BobbyRicky Tag什么都不做。标记只是一个简单的对象,主要用作与控件关联的所有内容的垃圾箱,它没有其他用途,至少在过去100年中一直存在:D.如果要选择默认值,则必须说SelectedValue=“CA”(其中ComboBoxItem的值必须符合此值)-SelectedIndex=0(其中ComboBoxItem的索引必须符合此值)-或者您所说的最好的SelectedItem=SomeCLRobject(其中ComboxItem的项目必须符合此值)
但是
您应该真正查看项目资源注意:此更改组合框中显示的值,但在用户实际更改选择之前,不会更改基础绑定值。因此,就触发意外/意外行为而言,它可能非常危险。不显示第一个值。
SelectedValuePath="CODE"
    <ComboBox Name="PersonComboBox"  Width="312" SelectedItem="{Binding Path=PERSON}" SelectedIndex="0" >
                <ComboBoxItem Tag="AA">Adam</ComboBoxItem>
            </ComboBox>