用下拉框做了一个按类别查找,可是取不到里面的文本。在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 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);
}
}