UWP中的数据绑定不会刷新

时间:2016-02-17 14:18:57

标签: c# xaml win-universal-app

我试图绑定'文字'我的TextBlock在xaml中的属性为全局字符串,但是当我更改字符串时,TextBlock的内容不会改变。我错过了什么?

我的xaml:

<StackPanel>
        <Button Content="Change!" Click="Button_Click" />
        <TextBlock Text="{x:Bind text}" />
</StackPanel>

我的C#:

    string text;
    public MainPage()
    {
        this.InitializeComponent();
        text = "This is the original text.";
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        text = "This is the changed text!";
    }

3 个答案:

答案 0 :(得分:10)

x:Bind的默认绑定模式是OneTime,而不是OneWay,它实际上是Binding的默认值。此外textprivate。要拥有有效的绑定,您需要拥有public property

<TextBlock Text="{x:Bind Text , Mode=OneWay}" />

代码隐藏

private string _text;
public string Text
{ 
    get { return _text; }
    set
    {
        _text = value;
        NotifyPropertyChanged("Text");
    }
  

另外,在文本的设置器中提升PropertyChanged非常重要。

答案 1 :(得分:1)

为什么当你在代码背后时却没有这样使用它(我不确定.Text可能是它.Content只是尝试一下):

<TextBlock x:Name="txtSomeTextBlock/>

public MainPage()
{
    this.InitializeComponent();
    txtSomeTextBlock.Text = "This is the original text.";
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    txtSomeTextBlock.Text = "This is the changed text!";
}

答案 2 :(得分:-1)

当通过Itemsource进行数据绑定不刷新时,甚至修改了源this may solve refresh problem