更改绑定值后,绑定文本块值不会更改

时间:2017-07-05 10:28:26

标签: c# xaml binding uwp xbind

为什么TextBlock“T1”在点击按钮“B1”后仍然没有显示“101”,仍显示“100”?

<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;
    }
}

1 个答案:

答案 0 :(得分:1)

您的value是一个字段,是的,它适用于x:Bind。实际上它甚至应该是private

但为了让用户界面更新 value的值,您需要在以下三个更改中进行一次 -

  1. 设置后调用Bindings.Update()
  2. 将其更改为dependency property
  3. 将其更改为普通属性,但在页面上实现INotifyPropertyChanged并在setter上引发属性更改事件。您可以从here了解更多信息。
  4. 但要选哪一个?这通常是我做的 -

    1. 如果该属性很少更改,我使用Bindings.Update()并从绑定中删除Mode=OneWay以获得最佳效果。
    2. 如果属性存在于UI元素的代码隐藏中(就像你的情况一样),我会使用依赖属性。
    3. 如果该属性位于ViewModel中,我使用INPC