2 nbspwoca NBSPWoCa 于 2014.08.20 21:13 提问

关于WPF中ComBox的问题
wpf

用下拉框做了一个按类别查找,可是取不到里面的文本。在xaml页面怎么写ComBox??在ViewModel.cs呢?

1个回答

sun_shine_jin
sun_shine_jin   2014.12.24 16:21

在XAML文件中的代码:

  <Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource cb}}">
        <StackPanel HorizontalAlignment="Left">
            <ComboBox ItemsSource="{Binding Info}" Width="150" SelectedItem="{Binding ComboSelectedItem,Mode=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);
        }

    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!