我有2个不同的观看次数,MainView
和SectionView
,其中SectionView
是prism
中的区域(使用MainView
库)。在MainView
中,我有DataGrid
个Object
个,每个包含5个属性。可以一次选择其中一个Object
,这将打开SelectionView
包含4个TextBox
es和1个ComboBox
,显示Object
的值的属性。我通过绑定每个TextBox
'来做到这一点。 Text="{Binding this.MainView.SelectedObject.[PropertyGoesHere]}"
现在,当其中一个属性被修改时,我想要启用两个按钮,一个用于保存更改(我不想立即保存,因此TwoWay不是一个选项),还有一个要还原更改(换句话说,将框的值重置为用户在MainView
中选择对象时的值。
我认为这个过程应该是
用户选择Object
并设置MainView.SelectedObject
。 SectionView
需要听到'这个,并将属性值保存在自己的SelectedObject
中。 SectionView
中的框将通过绑定到MainView.SelectedObject
属性显示这些属性的值,或者从SectionView.SelectedObject
获取默认值(我认为后者会更好?)。
默认情况下,按钮已启用。修改其中一个属性后,两个按钮都应启用,并且两个视图.SelectedObject
的属性都不应更改。用户现在可以选择按保存或还原。保存后,方框“属性应发送到MainView.SelectedObject
(从而有效地更改Object
属性),按钮应再次禁用。在还原时,盒子是'属性应重置为SectionView.SelectedObject
的属性,并且按钮应该禁用(从而让用户可以选择重新开始)。
我不希望任何内容与Mode="TwoWay"
一起使用的原因是因为用户可能只是从Object
中选择另一个DataGrid
,这应该与预告Revert相同,只需将新的属性值放入框中即可。
我有所有需要与彼此设置进行通信的独立对象。视图DataGrid
和TextBox
/ ComboBox
,这两个字段都包含Object
。我可以将SectionView
中的框绑定到MainView.SelectedObject
的属性,但我认为这不是最好的方式。
我需要帮助的主要部分是设置听力'每当设置SectionView
时.SelectedObject
设置它自己的MainView.SelectedObject
,并在修改框中的属性时启用按钮。
编辑:试图更清楚地隔离我所遇到的问题; 我需要在ViewModel 1中有一个Object将它的属性发送给ViewModel 2。 当一些文本框的文本值与其(动态)'默认值'不同时,我需要启用和禁用2个按钮。值。