我试图在一个弹出框中设置文本框的绑定文本,但是我的视图模型的绑定属性的setter从未被调用。我将视图设置如下:
<CommandBar>
<AppBarButton Icon="Edit" AllowFocusOnInteraction="true">
<Flyout>
<StackPanel>
<TextBlock Text="Enter Qty:" />
<TextBox Text="{Binding EditQty, Mode=TwoWay}" InputScope="Number" />
<Button Content="Update" Command="{Binding EditCommand}" />
</StackPanel>
</Flyout>
<CommandBar>
我的 ViewModel 代码也很简单:
public decimal _editQty;
public decimal EditQty
{
get => _editQty;
set => Set(ref _editQty, value);
}
我甚至尝试使用UpdateSourceTrigger=Explicit绑定数据,然后在按钮的点击事件中,设置代码后台调用。
textBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
在调试期间,我可以看到textBox.Text的值已经正确更改,但是setter仍然没有被UpdateSource()调用。如果这很重要,我正在使用Windows 10 Build 14393(周年纪念版)。
有什么办法可以解决吗?此时,我将不得不放弃这个想法,并将文本框放在对话框中,即使将其放在flyout中会带来更好的用户体验。