如何将WPF组合框的selectedItem分配给变量

时间:2010-06-28 16:36:28

标签: wpf wpf-controls

我希望你能帮我解开一个使用组合框的问题。

在我的项目中,我需要使用一个集合中的值,并将这些项目显示在我的组合框中。这时我构建了一个只包含不同参与类型的可观察集合

public ObservableCollection myinvolvement = new ObservableCollection();

    private void fillList() /
    {
        involvementDataModel i1 = new involvementDataModel();
        i1.involvements = "Witness";

        involvementDataModel i2 = new involvementDataModel();
        i2.involvements = "Suspect";

        involvementDataModel i3 = new involvementDataModel();
        i3.involvements = "Victim";

        involvementDataModel i4 = new involvementDataModel();
        i4.involvements = "Other";

        myinvolvement.Add(i1);
        myinvolvement.Add(i2);
        myinvolvement.Add(i3);
        myinvolvement.Add(i4);
    } 

然后使用以下命令将其绑定到组合框:cmboInvType.ItemsSource = myinvolvement;

在我的xaml中我将组合框设置为

<ComboBox x:Name="cmboInvType" ItemsSource="{Binding}" Grid.Row="2" Height="32" HorizontalAlignment="Left" Margin="27,5,0,0" VerticalAlignment="Top" Width="204" SelectionChanged="cmboInvType_SelectionChanged">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock x:Name="cmbvalue" TextAlignment="Center" Text="{Binding involvements}"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

这似乎工作正常,因为我可以看到列表中的每个唯一值但是当我从组合框中选择一个值时,我需要将此值传递给变量,然后可以将其发送回主应用程序。我很乐意继续传递数据部分,但我仍然坚持如何捕获当前选定的值。

每当我从组合框中选择一个值时,我都会返回数据路径(WinODS_ClientApp.Data.involvementDataModel),而不是所选的值?

如何将字符串中的字符串转换为正确的字符串格式?

到目前为止,我已经尝试过:

放在SelectionChangedEventArgs上 cmboInvType.SelectedItem.ToString()

然而,这仍然似乎返回路径与价值。

我记得在某个地方读过这篇文章,过去我已经用UI数据模板解决了这个问题,但是在我需要获取所选值并将其传递给另一个变量的实例中。

感谢您的任何见解!

2 个答案:

答案 0 :(得分:1)

请检查

  

SelectedValuePath

您可以将属性名称配置为路径,在SelectedValue中,您将获得对象的属性值。

答案 1 :(得分:0)

ComboBox.SelectedItem返回involvementDataModel的实例,因为这是当前选中的项目。只是因为当渲染与所选内容无关时,使用一个属性来获取项目的文本。

如果您想获取所选项目的文本,我只需获取所选项目,将其投射到involvementDataModel,然后获取所需属性的值。