Helpex - Trao đổi & giúp đỡ Đăng nhập
2

Tôi có một số hộp tổ hợp được khởi tạo bằng văn bản mặc định mà sau này sẽ được thay thế bằng văn bản trong tệp văn bản để hỗ trợ các ngôn ngữ khác nhau. Tôi đã thử các cách khác nhau để thay đổi văn bản nhưng không có cách nào trong số đó hiệu quả:

Khởi tạo:

myCombobox.itemSource = new ObservableCollection(Of String){"FirstItem", "SecoundItem"})

Cách đầu tiên:

myCombobox.Items(i) = GetString(myCombobox.Items(i))

Cách bảo mật:

Dim comboboxStr = myCombobox.Items(i)
myCombobox.Items.RemoveAt(i)
myCombobox.Items.Add(GetString(i))

Cả hai cách đều ném ra một lỗi không hợp lệ (InvalidOperationException) với gợi ý là hãy thử dùng "ItemsControl.ItemsSource" thay vì "ItemsSource"

Có thể có cách nào khác để thay đổi các mục hoặc tại sao ngoại lệ này lại xảy ra?

2 hữu ích 0 bình luận 841 xem chia sẻ
1

Đây là một vấn đề phổ biến. Sau khi bạn có dữ liệu liên kết với ItemsControl.ItemsSource(hoặc bất kỳ lớp nào được dẫn xuất từ ItemsControlđó, thì bạn không thể sử dụng thuộc ItemsControl.Itemstính để thao tác dữ liệu. Thay vào đó, (bạn nên khai báo một thuộc tính và) chỉ cần truy cập vào bộ sưu tập dữ liệu mà bạn liên kết dữ liệu trực tiếp:

SomeProperty = new ObservableCollection(Of String){"FirstItem", "SecoundItem"})

...

myCombobox.itemSource = SomeProperty

...

SomeProperty.Remove(someItem)
1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ wpf vb.net combobox code-behind invalidoperationexception , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading