我有一个WPF UserControl,它允许编辑数据对象(VariableDataGroup)。当我使用以下语法时,绑定工作正常,我的用户控件正确显示:
<vdi:VariableDataPageView DataContext="{Binding VariableData}" Grid.Row="4" Grid.Column="1" >
其中 VariableData 是父屏幕ViewModel上的属性。 但是,当我尝试使用&#34;&lt; Binding&gt;&#34;语法,然后我的用户控件不显示数据。
<vdi:VariableDataPageView Grid.Row="4" Grid.Column="1" >
<Binding Path="VariableData" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<!--<Binding.ValidationRules>
<validation:VDIComittedValidationRule ValidatesOnTargetUpdated="True" />
</Binding.ValidationRules>-->
</Binding>
</vdi:VariableDataPageView>
我想切换到使用语法的原因是使用自定义验证规则来适应现有代码。
第一个问题:对于&#39; DataContext =&#34; {Binding VariableData}&#34;&#39;的等效语法是什么? ?
第二个问题:是否建议在UserControl中执行验证并将其与父视图上的验证集成?我认为它应该工作的方式是UserControl执行它自己的所有验证,只是将验证的是/否结果传递给父页面,但整个WPF编程模型对我来说是新的。
谢谢, 振芳。
答案 0 :(得分:4)
DataContext="{Binding VariableData}"
<vdi:VariableDataPageView Grid.Row="4" Grid.Column="1" >
<vdi:VariableDataPageView.DataContext>
<Binding Path="VariableData" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<!--<Binding.ValidationRules>
<validation:VDIComittedValidationRule ValidatesOnTargetUpdated="True" />
</Binding.ValidationRules>-->
</Binding>
</vdi:VariableDataPageView.DataContext>
</vdi:VariableDataPageView>