具有 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工作.我太愚蠢了,无法将int转换为string

Accy_selected = "2039";

我不知道如何解决它

max(2040(不包括在ComboBox中,是吗?只要计数器变量i小于max,您就会迭代:

for (int i = min; i < max; i++)

如果将条件更改为i <= max,则在设置Accy_selected属性时,应包含并选择值"2040",如下所示:

Accy_selected = Convert.ToString(max);

最新更新