【发布时间】:2019-03-13 18:28:44
【问题描述】:
在我的 wpf 应用程序组合框中,SelectionChanged 事件在绑定时触发,如何解决?
<telerik:RadComboBox
StaysOpenOnEdit="True"
IsSynchronizedWithCurrentItem="True"
OpenDropDownOnFocus="True"
ItemsSource="{Binding SiteSurveyModel.AtsNumberCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsFilteringEnabled="False"
IsEditable="False">
<ie:Interaction.Triggers>
<ie:EventTrigger EventName="SelectionChanged">
<ie:InvokeCommandAction Command="{Binding ATSRadComboBoxSelectedItemChangedCommand}" CommandParameter="{Binding ElementName=atsRadComboBox}" >
</ie:InvokeCommandAction>
</ie:EventTrigger>
</ie:Interaction.Triggers>
</telerik:RadComboBox>
还有
private void BindAtsNumberCollection()
{
try
{
List<int> NumberList = new List<int>();
for (int i = 1; i <= 100; i++)
{
NumberList.Add(i);
}
SiteSurveyModel.AtsNumberCollection = new ObservableCollectionEx<int>(NumberList);
}
catch (Exception ex)
{
customerAC.LogFile(ex.ToString());
}
}
和Selection的变化方法是一样的
private void onATSRadComboBoxSelectedItemChangedCommand(object obj)
{
try
{
RadComboBox atsRadComboBox = obj as RadComboBox;
string selectedValue= atsRadComboBox.SelectedValue.ToString();
if (selectedValue.Trim() != string.Empty)
{
BindAtsData(Convert.ToInt32(selectedValue));
}
}
catch (Exception ex)
{
customerAC.LogFile(ex.ToString());
}
}
我们正在执行一些计算,当它在加载时间触发时,结果会出错,我们非常沮丧如何解决这个问题。请提供需要的完整解决方案。
【问题讨论】:
-
它正在发生变化,因此阻止更改事件听起来像是您想隐藏源自不同部分的问题。
-
嗨 grek40,你明白我的问题吗?当页面打开然后事件触发时,我不想这样。有什么解决办法吗?
-
事件是在没有实际更改选择的情况下触发,还是在绑定时更改了选择?这是两个完全不同的事情,最后您可能必须更新您的处理程序代码,因为在不派生您自己的自定义控件的情况下可能无法阻止事件触发。或者,如果可能,请考虑其他组件依赖于要触发的事件的可能性。不保证您是唯一的听众。
-
“事件是否在没有实际更改选择的情况下触发” 是。你想看选择更改事件的代码吗?
-
如果您想要关于如何更改代码的建议,那么我可能必须看到它。但是,这应该不难,只需检查
SelectionChangedEventArgs.AddedItems和SelectionChangedEventArgs.RemovedItems集合,如果两者都为空,则从处理程序返回。