C# 绑定文本块值不为';在更改绑定值后不进行更改
为什么文本块“T1”在点击按钮“B1”后不显示“101”而仍然显示“100”C# 绑定文本块值不为';在更改绑定值后不进行更改,c#,xaml,binding,uwp,xbind,C#,Xaml,Binding,Uwp,Xbind,为什么文本块“T1”在点击按钮“B1”后不显示“101”而仍然显示“100” 您的值是一个字段,是的,它与x:Bind一起工作。实际上,它甚至应该是私有的 但是为了让UI更新value的值,您需要进行以下三项更改之一- 设置后调用Bindings.Update() 把它换成一个 将其更改为普通属性,但在页面上实现INotifyPropertyChanged,并在setter上引发属性更改事件。你可以从中读到更多 但是选择哪一个呢?我通常就是这么做的- 如果属性很少更改,我将使用Bindings
您的
值
是一个字段,是的,它与x:Bind
一起工作。实际上,它甚至应该是私有的
但是为了让UI更新value
的值,您需要进行以下三项更改之一-
Bindings.Update()
INotifyPropertyChanged
,并在setter上引发属性更改事件。你可以从中读到更多但是选择哪一个呢?我通常就是这么做的-
Bindings.Update()
并从绑定中删除Mode=OneWay
,以获得最佳性能INPC
值得注意的是,Bindings.Update()将更新页面上的所有x:Bind绑定,因此如果布局开始变得更复杂,可能不是正确的路径。非常好,谢谢。
<StackPanel>
<TextBlock Name="T1" Text="{x:Bind value, Mode=OneWay}"/>
<Button Name="B1" Content="+1" Click="B1_Click"/>
</StackPanel>
public sealed partial class MainPage : Page
{
public int value;
public MainPage()
{
InitializeComponent();
value = 100; // initial value
}
private void B1_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
value = value + 1;
}
}