Không chắc chắn lý do tại sao bạn không thể liên kết dữ liệu với SelectedItem trên ComboBox mà không thấy mã của bạn. Dưới đây cho bạn thấy làm thế nào để làm điều đó bằng cách sử dụng một CollectionView có quản lý mục hiện tại được xây dựng trong đó comboboxes hỗ trợ. CollectionView có một thuộc tính CurrentItem nhận được thuộc tính mà bạn có thể sử dụng để hiện được chọn.
XAML:
<Window x:Class="CBTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<ComboBox
ItemsSource="{Binding Path=Names}"
IsSynchronizedWithCurrentItem="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Text="{Binding Path=Names.CurrentItem}" />
</StackPanel>
</Window>
Mã đằng sau:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Data;
namespace CBTest
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = new VM();
}
}
public class VM
{
public VM()
{
_namesModel.Add("Bob");
_namesModel.Add("Joe");
_namesModel.Add("Sally");
_namesModel.Add("Lucy");
Names = new CollectionView(_namesModel);
// Set currently selected item to Sally.
Names.MoveCurrentTo("Sally");
}
public CollectionView Names { get; private set; }
private List<string> _namesModel = new List<string>();
}
}
Nguồn
2010-05-18 19:27:12
điều này thật kỳ lạ. Tôi có thể thề tôi đã làm chính xác những gì bạn đề nghị trước vì tôi đọc về nó trên một số blog ... Bây giờ tôi đã cố gắng một lần nữa và nó làm việc: P Trong khi đó tôi đã giúp với điều này nếu ai đó quan tâm XD // Đặt lớp học mới được tạo thành chỉ mục đã chọn trong điều khiển giao diện người dùng .. SelectedSchoolclassIndex = (Schoolclasses.Count! = 0)? Schoolclasses.Count - 1: 0; – msfanboy
Chỉ có vấn đề này. Tôi đã có 2 bộ sưu tập riêng biệt, và quên toán tử bằng để currentitem được chọn từ một bộ sưu tập khác so với cái tôi liên kết với XAML. Vì vậy, việc triển khai bằng cố định vấn đề. Nhưng việc chọn từ cùng một bộ sưu tập cũng đã khắc phục được sự cố –