c# - 带有 SelectedValue 的 WPF 组合框表现得很奇怪
问题描述
我有一个ComboBox
包含一定年数的。但是,我对应该选择的项目有问题。
XAML
<ComboBox MaxDropDownHeight="90" Height="10" Width="80" ItemsSource="{Binding accy}" DisplayMemberPath="DisplayMember" SelectedValuePath="ValuePath" SelectedValue="{Binding Accy_selected}"/>
主窗口.cs
public MainWindow()
{
InitializeComponent();
this.DataContext = new Test();}
测试.cs
class Test
{
public ObservableCollection<ComboYear> accy { get; set; }
private string _accy_selected = "";
public Test()
{
int min = 1940;
int max = 2040;
accy = new ObservableCollection<ComboYear>();
for (int i = min; i < max; i++)
{
accy.Add(new ComboYear { DisplayMember = Convert.ToString(i), ValuePath = Convert.ToString(i) });
}
Accy_selected = Convert.ToString(max);
}
public class ComboYear
{
public string DisplayMember { get; set; }
public string ValuePath { get; set; }
}
public string Accy_selected
{
get { return _accy_selected; }
set
{
if (value != _accy_selected)
{
_accy_selected = value;
NotifyPropertyChanged("Accy_selected");
}
}
}
已ComboBox
填充,但未选择任何项目。关于这一点的奇怪部分是如果我改变这条线
Accy_selected = Convert.ToString(max);
对此,它正在工作。它在ComboBox
. 我是不是太笨了,无法将 a 转换int
为 a string
?
Accy_selected = "2039";
我不知道如何解决它
解决方案
max
( 2040
) 不包括在 中ComboBox
,是吗?只要计数器变量小于,您就i
在迭代 max
:
for (int i = min; i < max; i++)
如果将条件更改为,则在设置属性i <= max
时应包含并选择值“2040” :Accy_selected
Accy_selected = Convert.ToString(max);
推荐阅读
- azure - 无法访问 azure kubernetes 的服务
- python - 从嵌套字典中获取重复项
- react-native - 如何在 StackNavigator 标题下方设置 TabNavigator 图标?
- solr - DSE如何传播数据?
- python - 使用正则表达式和python排列文本文件输出regex.sub
- android - 处理程序 postdelayed 不到 10 毫秒不受影响
- meteor - 在 Meteor 中通过“require”导入 JSON 时出现问题
- python - 如何使用 pd.Grouper 按月分组日期?
- recursion - 在 ocaml 中查找给定数量的足球比赛的所有排列
- python - 使用python递归解析复杂的api json数据