首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的ComboBox SelectedItem为空?

为什么我的ComboBox SelectedItem为空?
EN

Stack Overflow用户
提问于 2011-08-31 20:46:15
回答 1查看 5.3K关注 0票数 0

我有一个WPF/MVVM (使用MVVM)应用程序设置,其中有一个ComboBox,它位于DataTemplate内部。ComboBox的XAML如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ComboBox x:Name="cbTeachers" 
          Grid.Column="1" 
          Style="{StaticResource ComboBox}" 
          ItemsSource="{Binding Teachers}" 
          Grid.Row="3" 
          DisplayMemberPath="Name" 
          SelectedValuePath="Id" 
          IsSynchronizedWithCurrentItem="False" 
          SelectedItem="{Binding Path=SelectedTeacher}">
     <i:Interaction.Triggers>
          <i:EventTrigger EventName="SelectionChanged">
               <i:InvokeCommandAction Command="{Binding TeacherSelectedCommand}"
                                      CommandParameter="{Binding SelectedItem, ElementName=cbTeachers}" />
          </i:EventTrigger>
     </i:Interaction.Triggers>
</ComboBox>

教师属性ItemsSource是一个名为ObservableRangeCollection的类型,它基于这里找到的代码:http://geekswithblogs.net/NewThingsILearned/archive/2008/01/16/have-worker-thread-update-observablecollection-that-is-bound-to-a.aspx,但它非常类似于标准ObservableCollection。SelectedTeacher属性是在设置另一个属性时设置的,代码看起来非常类似于此:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.SelectedTeacher = (from t in this.Teachers where t.Id == this.DataItem.Teacher.Id select t).Single();

我遇到的问题(对我来说毫无意义)是,一旦我设置了SelectedTeacher,它就会被重置为空。我可以通过调试器看到SelectedTeacher有一个值,并且当我为属性在setter上放置一个断点时,它肯定有这个值。但是,该属性将再次以空值被击中。我检查了调用堆栈,它显示了唯一的前一行为外部代码(这是有意义的,因为我只在一个地方设置了该属性,并且它只按预期被击中一次)。扩展调用堆栈窗口中的外部代码选项将显示典型的WPF调用堆栈,可能有40种方法,因此它肯定是WPF的内部,而不是我正在做的使其重置的事情。实际上,当我移除SelectedItem=“{}”时,该属性的设置器不会被第二次调用(因此它保留了它的值),但是ComboBox当然也不会显示所选的项。我尝试在我的视图模型中实现一个SelectedIndex选项,但这也不起作用。ComboBox只是不选择项目。我可以在ComboBox中更改所选的项,但是初始设置不会被接受。

有什么想法吗?基于我搜索的所有内容,它可能与我使用DataTemplate相关,但我必须这样做,因为该模板是父ContentTemplateSelector实现的一部分。

另外,我有多个属性绑定到这个DataTemplate中的控件,这是唯一一个不能工作的属性。其他的都工作得很好。我也尝试过带有和不带"IsSynchronizedWithCurrentItem“标志的IsSynchronizedWithCurrentItem,这并没有什么区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-31 21:27:09

你有没有试过移除EventTrigger的东西,只想使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SelectedItem="{Binding Path=SelectedTeacher, Mode=TwoWay}"

和Mode=TwoWay?

我不清楚你想用你的EventTrigger实现什么?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7266215

复制
相关文章
解惑 | 为什么我根据时间戳获得的offset为空呢?
最近有一个需求,要查询某一时间戳对应的offset值,于是就想到了使用 ./bin/kafka-run-class.sh kafka.tools.GetOffsetShell --time <timestamp> ,但是我在测试的时候,发现有的时间戳会获取不到offset,是空。但是明明指定的时间戳有上报数据,肯定有对应的 offset 的。于是就谷歌,找到了这篇帖子:
create17
2020/09/24
2.8K0
dropdownlist控件的几个属性selectedIndex、selectedItem、selectedValue、selectedItem.Text、selectedItem.value的区别…
1. selectedIndex——指的是dropdownlist中选项的索引,为int,从0开始,可读可写
全栈程序员站长
2022/11/03
8230
dropdownlist控件的几个属性selectedIndex、selectedItem、selectedValue、selectedItem.Text、selectedItem.value的区别…
【我们一起写框架】MVVM的WPF框架(三)—数据控件
这世上,没人能一次性写出完美无缺的框架;因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美。
Kiba518
2018/09/28
2.4K0
【我们一起写框架】MVVM的WPF框架(三)—数据控件
【愚公系列】2023年09月 WPF控件专题 ComboBox控件详解
WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。
愚公搬代码
2023/09/25
1.2K0
UrlReferrer为空的问题?
官方解释:获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL。 1.也就是说,如果用Request.Redirect之后,再用Request.UrlReferrer是得不到前一个页面的链接的,因为这不是客户端的请求。 2.既然服务端不行,那换个思路:在客户端用js导航如何?比如下面这样 A.aspx上用window.location='B.aspx' 但实践证明在B.aspx上用Request.UrlReferrer仍然为空,即js导航也不行! 3.用A链接试一下 A.aspx上写一段ht
菩提树下的杨过
2018/01/23
2.4K0
jq 判断是否为空,为空隐藏指定 div
<style>.mydiv{ width:300px; height:300px; background:red;}</style> <div class="mydiv">     <div class="content">          这是一句话,删除的话会让 mydiv display:none;          </div> </div> <script src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script> <sc
Savalone
2020/02/11
7.1K0
java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]
public static boolean isEmpty(Object obj)
全栈程序员站长
2022/06/25
7K0
C#自定义泛型类绑定ComboBox控件
C# WinForm ComboBox 自定义数据项 (ComboBoxItem )
跟着阿笨一起玩NET
2018/09/18
1.6K0
为什么我不建议你用去 “ ! = null " 做判空?
最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢?
用户9239674
2022/01/22
1K0
silverlight中如何得到ComboBox的选中值(SelectedValue)?
用惯了Asp.Net中的ComboBox和ListBox,想当然的以为SL/Winform/WPF中的ComboBox也应该有类似SelectedValue的属性,但是结果很遗憾,木有! 不过,这个问
菩提树下的杨过
2018/01/23
1.3K0
IOS数组为空的处理
某些情况下,后台可能由于各种原因,对某个字段返回了null值,这时我们取到的就是[NSNull null]这样一个对象,再比如说,后台可能对某一个数据取值,但取到了0个,这时返回的是一个空组,我们取到的就是@[],空组。 取到的array是一个NSNull对象。 NSNull是一个特殊的类,它和nil一样,也代表空值,但二者有区别,NSNull不接收NSArray的那些方法,它只有一个类方法: 因此判断数组是否为空,需要对各种情况都进行判断。 比如这种情况: ( "<null>", "<null>",
rectinajh
2018/05/17
3.4K0
python判断是否为空_python 判断对象是否为空
在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:if a is None:
全栈程序员站长
2022/07/01
10.5K0
win10 uwp 相机的分辨率设置方法
在 UWP 中可以使用 WinRT 提供的 Win10 特有的 API 用来捕获摄像机的内容,支持很多格式的硬件解码,性能会比 Win32 好特别多。我使用了 UWP 版本的和 WPF 基于 DirectShow 的版本进行性能对比
林德熙
2021/01/04
1.4K0
java 对象为空判断_java中判断对象是否为空的方法
首先,直接使用 object == null 去判断,对象为null的时候返回true,不为null的时候返回false。然后,在object != null 为true的情况下,进一步去判断对象的所有属性是否为null。
全栈程序员站长
2022/08/15
11.5K0
java 对象为空判断_java中判断对象是否为空的方法
java如何判断对象为空_java对象如何判断是否为空
在实际书写代码的时候,经常会因为对象为空,而抛出空指针异常java.lang.NullPointerException。
全栈程序员站长
2022/06/25
13.4K0
java如何判断对象为空_java对象如何判断是否为空
007 C# Word批量转Pdf
this.comboBox1.SelectedItem.ToString()是指comboBox1选取下拉列表内容。
职场编码
2020/05/30
1.2K0
007 C# Word批量转Pdf
WPF 省市县3级联动
请看前台代码,最重要的是通过省选择的元素来作为下一级的数据,于是选择第一个修改时,就会自动联动
林德熙
2022/08/04
1.1K0
WPF 省市县3级联动
请看前台代码,最重要的是通过省选择的元素来作为下一级的数据,于是选择第一个修改时,就会自动联动
林德熙
2018/09/19
2.1K0
vue 对象判断为空_Vue中可用的判断对象是否为空的方法
vue有两个方法可用 1. JSON.stringify(evtValue)=='{}’ 2. Object.keys(xxx).length==0 js判断对象是否为空对象的几种方法 1.将json对象转化为json字符串,再判断该字符串是否为”{}” var data = {}; var b = (JSON.stringify(data) == “{}”); alert(b);//true 2.for in 循环判断 var obj = {}; var b =…
全栈程序员站长
2022/08/12
6.2K0
JavaScript中为空判断
摘要总结:本文介绍了JavaScript中为空判断的不同情况,包括判断字符串是否为空、变量是否被定义和初始化过。通过这些判断,可以帮助开发人员编写更加健壮的代码。
林老师带你学编程
2018/01/03
3.9K0

相似问题

C++中与内存管理相关的查询

40

从设计模式获取与malloc相关的错误: malloc / free /malloc/ free

21

与C++中的指针相关

20

c++相关查询中的类原型

11

与活动相关的查询

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文