c# – 关于如何在MVVM中使用UpdateSourceTrigger = Explicit的一个很好的例子

前端之家收集整理的这篇文章主要介绍了c# – 关于如何在MVVM中使用UpdateSourceTrigger = Explicit的一个很好的例子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图弄清楚如何使用UpdateSourceTrigger = Explicit.

我有以下表格:

<StackPanel x:Name="LayoutRoot" Margin="10" DataContext="{Binding ElementName=Window,Mode=OneWay}">
    <DockPanel>
        <TextBlock Text="Proxy address:" VerticalAlignment="Center"/>
        <TextBox Text="{Binding User.PageAddress,Mode=TwoWay,UpdateSourceTrigger=Explicit}" Margin="28,0"/>
    </DockPanel>
    <DockPanel Margin="0,5,0">
        <TextBlock Text="User name:" VerticalAlignment="Center"/>
        <TextBox Text="{Binding User.UserName,UpdateSourceTrigger=Explicit}" Margin="46,0">
        <TextBlock Text="User password:" VerticalAlignment="Center"/>
        <TextBox Text="{Binding  User.Password,UpdateSourceTrigger=Explicit}" Margin="26,0"/>
    </DockPanel>
    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0">
        <Button Content="Ok" IsDefault="True" Width="70" Margin="0,15,0" Click="Ok_Click"/>
        <Button Content="Cancel" IsCancel="True" Width="70"/>
    </StackPanel>
</StackPanel>

我应该调用什么方法来更新User属性

我不想通过x:Name调用元素来调用绑定.如果我必须通过x:Name来解决这些元素,那么就我而言,我也可以完全没有约束力.

解决方法

您需要在后面的代码调用 BindingExpression.UpdateSource以手动更新绑定.显式绑定与MVVM并不真正兼容,因为您需要直接引用视图对象来执行手动更新.
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();

猜你在找的C#相关文章