使用XAML <binding> sytax绑定DataContext?

时间:2015-05-07 17:00:12

标签: c# wpf xaml

我有一个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编程模型对我来说是新的。

谢谢, 振芳。

1 个答案:

答案 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>