wpf-关于WPF中ComBox的问题

问题描述

关于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

wpf-关于WPF中ComBox的问题的相关文章

捕捉WPF应用程序中XAML代码解析异常

由于WPF应用程序中XAML代码在很多时候是运行时加载处理的.比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有错误,此时XAML代码解析器通常会抛出称为XamlParseException的异常.但是抛出的XamlParseException异常提供的信息非常简单,或者是很不准确.此时我们关于通过对变通的方法来获取更多的异常信息: 我们知道,WPF应用程序中的XAML代码是在InitializeComponent方法中解析的.而这个方法通常位于窗口对象的

WPF应用程序中的发声功能

几个星期以前,我坐在一辆崭新的丰田普锐斯汽车中,听着租车公司的销售代理讲解着仪表盘上遍布 的陌生控制开关和指示器."哇,"我想,"虽然技术和车一样都那么陈旧了,制造商仍继续美化着用 户界面". 从最广义的层面上说,用户界面是人机交互的地方.虽然这一概念与技术本身一样历史悠久,但用户 界面作为一种艺术形式大放异彩倚仗的却是个人计算机革命. 现在,恐怕只有很小一部分个人计算机用户能够记得 Apple Macintosh 和 Microsoft Windows 图形 用户

UI前沿技术 – WPF应用程序中的MIDI音乐

每一台 PC 都包含一个内置的 16 人乐队,可播放一些音乐.人们不容易注意此乐队的成员,因为它 们表示的可能是 Windows 所支持的声音和视频功能阵列中利用最不充分的组件. 此 16 人乐队是在符合 MIDI(乐器数字接口)标准的硬件或软件中实现的电子音乐合成器.在 Win32 API 中,以单词 midiOut 开头的函数支持使用 MIDI 合成器播放音乐. MIDI 支持不是 .NET Framework 的一部分,但如果要在 Windows 窗体或 Windows Presentat

在WPF的DataGrid中如果排序后再编辑单元格, 然后就不能重新绑定DataGrid?

问题描述 在WPF的DataGrid中如果排序后再编辑单元格, 然后就不能重新绑定DataGrid? 我找了很多类似的提问,都没找到答案,包括在stackoverflow. 正常的情况下,代码是可以运行的,但是一旦用户在datagrid中对某列排序了,接下来再编辑单元格也没问题,可是一旦在cellediteding事件中加入重新绑定,运行就会出错."{"在 AddNew 或 EditItem 事务过程中不允许"Sorting"."}". 我想可能

WPF在XAML中Binding使用StringFormat属性

原文:WPF在XAML中Binding使用StringFormat属性1.绑定Currency,如果没有字符的话,后面需要先加入{},不加的话会出问题 <TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" /> 2.绑定Currency,并在前面加入一些字符,跟上面相比,没有{} <TextBlock Text="{Binding Amount, StringFormat=Total: {0:C}}

在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH

原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 在项目中关于DataGrid的遇到过一些问题,其中是关于迁入CheckBox的双向绑定后,快速点击多次后出现"AddNew或EditItem事务过程不允许DeferRefresh"的问题,如图所示 或者是英文 原因是DataGrid编辑状态引起的,详情见http://stackoverflow.com/questions/3354916/what-is-the-prop

winform放入wpf主窗体中?

问题描述 winform放入wpf主窗体中? wpf作为主窗体有导航作用,winform是已经写好的程序.怎么把这个winform加载到wpf这个框里? 解决方案 http://jingyan.baidu.com/article/3aed632e663387701080910d.html

mfc-MFC 应用开发中Combox显示下拉框的内容,怎样才能列表中的字段发生变化,而当前选中的也发生变化

问题描述 MFC 应用开发中Combox显示下拉框的内容,怎样才能列表中的字段发生变化,而当前选中的也发生变化 MFC 应用开发中Combox显示下拉框的内容,怎样才能列表中的字段发生变化,而当前选中的也发生变化.我是基于文档开发的,每次列表内容发生改变,但是当前所选的源数据内容却不发生变化,需要人为手动去选择,请问有什么好的解决办法吗? 解决方案 最简单的是用定时器不断查询数据库,如果有变化,就更新界面. 解决方案二: 用addstring函数动态插入就可以了 解决方案三: addstring

[WPF]在Style中设置ToolTip的问题分析

刚才开到智者千虑发的[WPF]在Style中设置ToolTip的问题的博文,虽然最终给了一个暂时解决问题的方案,但是没有分析和解释其中的问题,正与他所说:但至于为什么不能直接在Setter.Value中放置TextBlock还是一个未解之谜. 趁着中午间隙,跟踪了一下,这里我将带给你完整的分析. 为了描述问题,首先,给出问题的xaml,当然,你也可以去智者千虑的blog查看详细描述. <TextBlock x:Name="textBlockContainer" Text=&quo