gpt4 book ai didi

WPF Combo Box 获取和设置数据

转载 作者:行者123 更新时间:2023-12-03 10:59:59 25 4
gpt4 key购买 nike

我将 WPF 与 MVVM 一起使用。问题是我有 Model 类说 Person 包含三个属性 PersonID、Name、Job。 View 模型包含 Person类(class)。 View 包含 ComboBox对于 Job我使用 ComboBoxItem 在 XAML 中静态输入值说工程师、律师、医生:现在我需要绑定(bind)到 Person.Job 的组合框当 View 显示某个人并能够输入/更改工作和要提交给人的新值时显示该人的工作的属性(即我想使用 MS Access 表单中的那个组合框)
提前致谢。
此处为 ComboBox 的 XAML 代码

<ComboBox ItemsSource="{Binding Person, UpdateSourceTrigger=PropertyChanged}" 
SelectedValue="{Binding Path=Job, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="PersonID"
SelectedItem="{Binding Person.Job, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Width="50" Height="20"
Grid.Row="1" Grid.Column="2"
HorizontalAlignment="Left">
<ComboBoxItem Content="Engineer"/>
<ComboBoxItem Content="Lawyer"/>
<ComboBoxItem Content="Doctor"/>
</ComboBox>

作业在组合框中正确显示,但是当保存新的或修改的值时,我在数据库中得到“System.Windows.Controls.ComboBoxItem:工程师”如何更正此问题。
谢谢

最佳答案

假设 Person.Jobstring , 没有 ID 并且您想保持您的工作列表静态尝试设置您的 ComboBox像这样:

<ComboBox SelectedItem="{Binding Path=Job, Mode=TwoWay}">
<ComboBox.ItemsSource>
<x:Array Type="sys:String" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String>Engineer</sys:String>
<sys:String>Lawyer</sys:String>
<sys:String>Doctor</sys:String>
</x:Array>
</ComboBox.ItemsSource>
</ComboBox>

你的问题是你的 Jobstring你定义 ComboBox项目为 ComboBoxItem这意味着 SelectedItem将是 ComboBoxItem类型,当您选择一个 WPF 时,会进行转换,在这种情况下,这意味着调用 ToString() ,因此您的数据。在上面的示例中,您设置了 ItemsSource到由 WPF 在 ComboBoxItem 中包装的字符串数组用于演示,但 SelectedItem将是 string类型

关于WPF Combo Box 获取和设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com