- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想学习 WPF 编程。我想知道将员工的性别绑定(bind)到 ComboBox:
class Staff {
public int Gender {get; set;}
}
class ViewModel {
private Staff _staff
public Staff Staff {
get {return _staff;}
set {
_staff = value;
RaisePropertyChangedEvent("Staff");
}
}
}
<ComboBox SelectedItem="{Binding Staff.Gender, Converter={StaticResource GenderConverter}}">
<ComboBoxItem IsSelected="True" Content="{StaticResource strGenderMale}"/>
<ComboBoxItem Content="{StaticResource strGenderFemale}"/>
<ComboBoxItem Content="{StaticResource strGenderOther}"/>
</ComboBox>
GenderConverter 是我定制的 Converter 来转换 int <-> string (0: male, 1: female, 2: other)
public class IntegerToGenderConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
if (value is int) {
if ((int)value == MyConstants.GENDER_MALE) { //GENDER_MALE is 1
return MyConstants.GENDER_MALE_STR; //GENDER_MALE_STR is the string: "Male"
}
if ((int)value == MyConstants.GENDER_FEMALE) {
return MyConstants.GENDER_FEMALE_STR;
}
}
return MyConstants.GENDER_OTHER_STR;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
switch (value.ToString()) {
case MyConstants.GENDER_MALE_STR:
return MyConstants.GENDER_MALE;
case MyConstants.GENDER_FEMALE_STR:
return MyConstants.GENDER_FEMALE;
default:
return MyConstants.GENDER_OTHER;
}
}
}
当我运行应用程序时,员工不为空(除性别外,其他所有内容(如姓名、出生日期...)都绑定(bind)良好:(
编辑:
当我创建一个 List Genders 并将其绑定(bind)到 ComboBox 的属性 ItemsSource 而不是使用标签时,它运行良好。为什么???
最佳答案
ComboBox 使用 ComboBoxItem
作为项目类型,当您显式添加它们时
<ComboBox>
<ComboBoxItem Content="..."/>
...
</ComboBox>
这意味着 SelectedItem
属性返回一个 ComboBoxItem,然后将其传递给您的转换器。但是,您的转换器不期望 ComboBoxItem 类型的值。
当您添加整数时 - 如在绑定(bind)的性别列表中 - 项目类型为 int
,您已在转换器中成功处理了它。在这种情况下,ComboBox 类仅在内部创建和使用 ComboBoxItems。
这是从 ItemSource
派生的所有 WPF 控件中的常见行为。他们使用用户提供的项目类型。
也就是说,您通常会为 Gender 属性使用枚举类型:
public enum Gender
{
Male, Female, Other
}
public class Staff
{
public Gender Gender { get; set; }
}
然后您可以将 Gender
值添加到您的 ComboBox 并在没有转换器的情况下绑定(bind) SelectedItem:
<ComboBox SelectedItem="{Binding Staff.Gender}">
<local:Gender>Male</local:Gender>
<local:Gender>Female</local:Gender>
<local:Gender>Other</local:Gender>
</ComboBox>
其中 local
是包含 Gender
类型的 C# 命名空间的 XAML 命名空间声明。
关于c# - WPF ComboboxItem 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29313382/
我的项目中有以下ComboBox,但是如果我这样写的话,很困扰我:
我的目标是拥有一个 ComboBox,其中每个下拉项目都有一个特定的文本和一个与之关联的特定项目,例如,如果有人点击“blah” - 所选项目将是 3. 据我所知 - 只有一个“内容”同时代表文本和值
我希望我的 ComboBox 像这样在多个列中显示 ComboBoxItem: 谁能告诉我该怎么做? 我可以用这个:
加载控件时,我的组合框项目选择中的内容未显示在组合框中。它在我鼠标悬停后出现,然后开始工作。 这是默认选中的组合框项目
我正在处理通常包含大量数据的 ComboBox 元素; ~250000 个数据条目。 当 ComboBox 像这样设置时,这会很好地工作。
我有一个小应用程序,其中相同的 ComboBox 出现在多个位置,并且它始终具有相同的项目集。而不是每次我使用组合框时都这样做: 我在想最好让项目成为我可以
我想为 PASS 设置文本颜色如 GREEN和 FAIL 的文本颜色如 RED .我似乎无法找到解决方案。我需要在纯 XAML 中执行此操作。 最
我正在尝试以编程方式填充 ComboBox。我正在创建 ComboBoxItems 并想设置它们的文本(对最终用户可见的文本)和它们的值(用户选择它后我将在后台处理的对象。 然而,ComboBoxIt
我目前有一个如下所示的组合框: //XAML Awake & Alive 这会引发错误:以与符号“&”开头的实体引用或序列必须以分号“;”终止。 我假设我缺少某种转义序列以允许我使用 &。如何设
如何从 SmartGWT ComboBoxItem 获取所有记录? 我将记录添加为数据源。没有找到任何方法来检索所有记录。 提前谢谢您! 最佳答案 尝试 RecordList recordList=c
在下拉菜单中我得到这样的结果。找到附件图片。实际上,在“名称”字段中,“名称”和“描述”都显示为逗号(,)分隔。 final ComboBoxItem comboBoxItem = new Combo
我有一个看起来像这样的样式: var comboBoxItemStyle = new Style(typeof(ComboBoxItem)); comboBoxItemStyle.Setters.Ad
您好,我刚刚构建了一个小型转换计算器,我在其中添加了一个组合框,因此它不会那么困惑且易于管理。我不会向我的组合框添加一些选项,以便用户有不同的选项可供选择。但是,我将构建一个带有转换计算的小类,以便在
我有一个绑定(bind)到 ObservableCollection 的 ComboBox:
我有以下示例代码。奇怪的是,MouseMove 事件正确触发,但是当替换为 MouseEnter 时,当鼠标移到 ComboBoxItem 上时没有任何反应。知道如何解决这个问题吗?我实际上需要在用户
我有一个使用 DataTemplate 的 ListBox。单个 ListBoxItems 显示为 TextBlock 和 ComboBox。我现在想为 ListBoxItems 使用 Style,而
我正在使用标准的 wpf/mvvm 应用程序,我将组合框绑定(bind)到 ViewModel 上的集合。 我需要能够从下拉列表中取消选择一个项目。意思是,用户应该能够选择一些东西,然后决定他们想要取
如何获取 ComboBoxItem 的 ParentComboBox? 如果按下 Insert-Key,我想关闭一个打开的 ComboBox: var focusedElement = Keyboa
我需要找到 ComboBoxItem 所在的 ComboBox。 在代码隐藏中,我在单击 ComboBoxItem 时捕获了一个事件,但我不知道特定 ComboBoxItem 属于几个 ComboBo
我正在尝试在 smartgwt 的 ComboBoxItem 中添加带有 null 值的空白行,该值已绑定(bind)到来自数据库的数据源。 我也尝试过服务层、 Controller 层和数据库的改变
我是一名优秀的程序员,十分优秀!