在前端更改值为1-5的组合框时,onpropertychange事件将激发一个方法,该方法实例化反映组合框值的viewmodel集合。当选择发生变化时,组合框还会处理后台代码中的一些UI行为,这些行为处理一些控件的显示和隐藏。当通过模型从数据库加载下拉列表的值时,onproperty change事件会触发,但它没有处理程序,因此被忽略。然而,代码隐藏部分确实会触发,并且正确的控件会显示在屏幕上。当控件值是由数据而不是用户更改时,我如何确保触发this事件?
private void MethodInformationViewModel_PropertyChanged(object sender,
System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "NumberOfTests")
{
ManageRunDialogues();
}
}XAML
<ComboBox x:Name="CB_NumberOfTests" Grid.Column="16" Grid.Row="4"
Grid.ColumnSpan="2" SelectionChanged="CB_NumberOfTests_SelectionChanged"
SelectedValue="{Binding
vmcTPMViewModel.MethodInformationViewModel.NumberOfTests, Mode=TwoWay}">
<sys:Int32>1</sys:Int32>
<sys:Int32>2</sys:Int32>
<sys:Int32>3</sys:Int32>
<sys:Int32>4</sys:Int32>
<sys:Int32>5</sys:Int32>
</ComboBox>我期待任何属性NumberOfTests的更改都会触发onpropertychenge事件。这是正确的,但是当数据库调用填充模型构造函数中的模型时,当属性发生变化时,没有处理程序,并且不会触发change事件,因此不会发生方法调用ManageRunDialogues()。我能做些什么?
发布于 2019-12-11 23:42:20
很抱歉发得太晚了。因此,答案是确保模型类实例化发生在MethodInformationViewModel_PropertyChanged事件连接发生之后。我把它们弄错了,所以属性在MethodInformationViewModel连接之前就已经改变了,因此导致了这种行为。切换它们意味着侦听器在从DB加载模型时工作。
为了解决上面的问题,测试的数量在同一个类中,并且在后面的代码中唯一要处理的是UI。
我喜欢你在一个问题上被投票否决的事实,真的鼓励男人们!+1讽刺?!?再次感谢你的仔细检查。
https://stackoverflow.com/questions/58282377
复制相似问题