我试图绑定'文字'我的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!";
}
答案 0 :(得分:10)
x:Bind
的默认绑定模式是OneTime
,而不是OneWay
,它实际上是Binding
的默认值。此外text
是private
。要拥有有效的绑定,您需要拥有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