gpt4 book ai didi

c# - 关于如何使用 UpdateSourceTrigger=Explicit 和 MVVM 的一个很好的例子

转载 作者:太空狗 更新时间:2023-10-29 21:13:51 26 4
gpt4 key购买 nike

我正在尝试了解如何使用 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,0,0"/>
</DockPanel>
<DockPanel Margin="0,5,0,0">
<TextBlock Text="User name:" VerticalAlignment="Center"/>
<TextBox Text="{Binding User.UserName, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Margin="46,0,0,0"/>
</DockPanel>
<DockPanel Margin="0,5,0,0">
<TextBlock Text="User password:" VerticalAlignment="Center"/>
<TextBox Text="{Binding User.Password, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Margin="26,0,0,0"/>
</DockPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,5,0,0">
<Button Content="Ok" IsDefault="True" Width="70" Margin="0,0,15,0" Click="Ok_Click"/>
<Button Content="Cancel" IsCancel="True" Width="70"/>
</StackPanel>
</StackPanel>

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

我不想通过 x:Name 来寻址元素来调用绑定(bind)。如果我必须通过 x:Name 来处理元素,那么我也可以完全不绑定(bind),就我而言。

最佳答案

您需要调用BindingExpression.UpdateSource在后面的代码中手动更新绑定(bind)。显式绑定(bind)与 MVVM 并不真正兼容,因为您需要直接引用 View 对象来执行手动更新。

// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();

关于c# - 关于如何使用 UpdateSourceTrigger=Explicit 和 MVVM 的一个很好的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com