问题描述
- 关于WPF中ComBox的问题
- 用下拉框做了一个按类别查找,可是取不到里面的文本。在xaml页面怎么写ComBox??在ViewModel.cs呢?
解决方案
在XAML文件中的代码:
<Grid x:Name=""LayoutRoot"" Background=""White"" DataContext=""{Binding Source={StaticResource cb}}""> <StackPanel HorizontalAlignment=""Left""> <ComboBox ItemsSource=""{Binding Info}"" Width=""150"" SelectedItem=""{Binding ComboSelectedItemMode=TwoWay}"" > <i:Interaction.Triggers> <i:EventTrigger EventName=""SelectionChanged""> <si:CallDataMethod Method=""ComboBoxSelectionChanged""></si:CallDataMethod> </i:EventTrigger> </i:Interaction.Triggers> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text=""{Binding Name}"" Tag=""{Binding Tag}"" ></TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> <Button Margin=""0 5 0 5"" Content=""Click"" Command=""{Binding}""></Button> <TextBlock Margin=""0 5 0 5"" Name=""tb""></TextBlock> </StackPanel> </Grid>
在ViewModel中的代码:
public class ComboBoxTemplateViewModel : ViewModelBase { private ObservableCollection<Student> _Info = new ObservableCollection<Student>(); private Student _ComboSelectedItem = null; public ComboBoxTemplateViewModel() { _Info.Add(new Student() { Name = ""ABC1"" Tag = ""1"" }); _Info.Add(new Student() { Name = ""ABC2"" Tag = ""2"" }); _Info.Add(new Student() { Name = ""ABC3"" Tag = ""3"" }); _Info.Add(new Student() { Name = ""ABC4"" Tag = ""4"" }); _Info.Add(new Student() { Name = ""ABC5"" Tag = ""5"" }); _Info.Add(new Student() { Name = ""ABC6"" Tag = ""6"" }); _ComboSelectedItem = _Info[1]; } public ObservableCollection<Student> Info { get { return _Info; } } public Student ComboSelectedItem { get { return _ComboSelectedItem; } set { _ComboSelectedItem = value; NotifyPropertyChanged(""ComboSelectedItem""); } } public ICommand GetSelectedData { get { return new RelayCommand(GetSelectedItemAndDisplayIt); } } private void GetSelectedItemAndDisplayIt() { } public void ComboBoxSelectionChanged() { MessageBox.Show(""Item selected is : "" + ComboSelectedItem.Name); } }
时间: 2024-10-30 22:20:08