G'day!Hộp Combo WPF có thể hiển thị văn bản thay thế khi lựa chọn của nó là null không?
Tôi muốn WPF ComboBox
của mình hiển thị một số văn bản thay thế khi lựa chọn giới hạn dữ liệu là null
.
Mô hình xem có các thuộc tính mong đợi:
public ThingoSelectionViewModel : INotifyPropertyChanged {
public ThingoSelectionViewModel(IProvideThingos) {
this.Thingos = IProvideThingos.GetThingos();
}
public ObservableCollection<Thingo> Thingos { get; set; }
public Thingo SelectedThingo {
get { return this.selectedThingo; }
set { // set this.selectedThingo and raise the property change notification
}
// ...
}
Quan điểm đã XAML ràng buộc với mô hình điểm trong cách dự kiến:
<ComboBox x:Name="ComboboxDrive" SelectedItem="{Binding Path=SelectedThingo}"
IsEditable="false" HorizontalAlignment="Left" MinWidth="100"
IsReadOnly="false" Style="{StaticResource ComboboxStyle}"
Grid.Column="1" Grid.Row="1" Margin="5" SelectedIndex="0">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem IsEnabled="False">Select a thingo</ComboBoxItem>
<CollectionContainer
Collection="{Binding Source={StaticResource Thingos}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Các ComboBoxItem
rúc vào đầu là một cách để có thêm một mục ở trên cùng. Đó là chrome thuần túy: mô hình xem vẫn tinh khiết và đơn giản. Chỉ có một vấn đề: người dùng muốn "Chọn một điều" được hiển thị bất cứ khi nào lựa chọn của ComboBox là rỗng.
Người dùng thực hiện không muốn điều được chọn theo mặc định. Họ muốn thấy một thông báo bảo họ chọn một điều.
Tôi muốn tránh việc gây ô nhiễm viewmodel với một lớp ThingoWrapper
với một phương pháp ToString
trở về "Chọn một thingo" nếu tài sản .ActualThingo
của nó là null, gói mỗi Thingo
như tôi cư Thingos
, và tìm ra một số cách để ngăn người dùng lựa chọn số Thingo
.
Có cách nào để hiển thị "Chọn một điều" trong ranh giới ComboBox
'sử dụng XAML thuần túy hoặc XAML thuần túy và một vài dòng mã trong lớp mã sau của chế độ xem không?
FWIW: tôi đã kết thúc thực hiện ThingoWrapper, sửa đổi ThingoSelectionViewModel để đối phó với sự lựa chọn của các giá trị null bọc, và tìm cách để tự động chọn các vật thể Whatsy và Fadoozamy nên tôi cũng không phải quấn chúng nữa. –