簡體   English   中英

具有SelectedValue的WPF組合框的行為很奇怪

[英]WPF Combobox with SelectedValue is behaving weird

我有一個包含特定年份的ComboBox 但是,我在選擇該項目時遇到了麻煩。

XAML

 <ComboBox MaxDropDownHeight="90" Height="10" Width="80" ItemsSource="{Binding accy}"  DisplayMemberPath="DisplayMember" SelectedValuePath="ValuePath" SelectedValue="{Binding Accy_selected}"/>

MainWindow.cs

 public MainWindow()
    {
        InitializeComponent();           
        this.DataContext = new Test();}

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";

我不知道如何解決它

max2040 )不包含在ComboBox ,對嗎? 只要計數器變量i 小於 max可以迭代:

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

如果將條件更改為i <= max ,則在設置Accy_selected屬性時應包括並選擇值“ 2040”:

Accy_selected = Convert.ToString(max);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM