在wpf中获取Combobox绑定的id

时间:2018-04-04 18:53:38

标签: c# wpf combobox

嗨我有一个组合框,我绑定了一些它,现在我想得到项目ID这是我的xaml:

<ComboBox Name="cmb" ItemsSource="{Binding School}"  
                  SelectedItem="{Binding Id}" 
                  SelectedValue="{Binding Id}"
                  Width="120"  
                  HorizontalAlignment="Left"   
                  Margin="183,39,0,0"   
                                           IsEditable="True"
               IsReadOnly="True"
                                     Text="انتخاب پایه"
                  VerticalAlignment="Top" SelectionChanged="cmb_SelectionChanged_1"  >

                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal">
                                                <TextBlock Text="{Binding Id}"/>
                                                <TextBlock Text=" - "/>
                                                <TextBlock Text="{Binding SchoolName}"/>
                                            </StackPanel>

                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                </ComboBox>

这就是背后的代码:

Console.WriteLine(cmb.SelectedValue);
Console.WriteLine(cmb.SelectedItem);

但结果是:

{ Id = 1, SchoolName = پيام انقلاب, Base = دوم, Year = 97-98 } 

我只需要id所以哪里出错了?

1 个答案:

答案 0 :(得分:0)

我通常绑定到与组合框绑定的集合中的相同类型的另一个对象。

例如,假设您的ItemsSource是名为Schools的列表。您创建了一个名为&#34; SelectedSchool&#34;的班级的学校属性。然后在你的组合框中,你创建一个TwoWay绑定到学校。

<ComboBox Name="cmb" ItemsSource="{Binding Schools}"  
    SelectedItem="{Binding Id}" 
    SelectedValue="{Binding SelectedSchool, Mode=TwoWay}"
    Width="120"  
    HorizontalAlignment="Left"   
    Margin="183,39,0,0"   
    IsEditable="True"
    IsReadOnly="True"
    Text="انتخاب پایه"
    VerticalAlignment="Top" SelectionChanged="cmb_SelectionChanged_1"  >

    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Id}"/>
                <TextBlock Text=" - "/>
                <TextBlock Text="{Binding SchoolName}"/>
            </StackPanel>

        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

然后你只需从codebehind / viewmodel中的SelectedSchool属性中获取值。