如果你有約束力 - 爲什麼不直接用XAML來做呢?看你的代碼,這是一種毫無意義的 - 你可能也只是去
Footer_text.Text = "Setting";
理論上,應該做在XAML或至少提供的東西它綁定到
<TextBlock Text="{Binding SomeProperty}" />
我不是當然,爲什麼你會將自己的「字符串」綁定到任何東西上......你有沒有需要綁定到文本屬性的對象?
而且使用
Binding("")
是什麼呢?一條空白的路徑?不知道綁定目標會在那裏...你有沒有試過
Binding()
取而代之?
編輯:
而且爲什麼你的綁定更新不及時的控制的原因,可能是因爲你還沒有綁定到其實現INotifyPropertyChanged或類似的接口的對象。該控件需要知道,當值發生變化,所以我會想象,結合「串」不給TextBlock的正確通知時,它改變
編輯2:
下面是一個簡單的例子結合工作:
我的窗口類Window.cs:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<TextBlock x:Name="txtName" Text="{Binding Name}"></TextBlock>
<Button Click="Button_Click">Click me 1</Button>
<Button Click="Button_Click_1">Click me 2</Button>
</StackPanel>
</Grid>
</Window>
後面的代碼中Window.xaml.cs
public partial class MainWindow : Window
{
SomeObjectClass obj = new SomeObjectClass();
public MainWindow()
{
InitializeComponent();
txtName.DataContext = obj;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
obj.Name = "Hello World";
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
obj.Name = "Goobye World";
}
}
對象綁定到(與INotifyPropertyChanged的)
class SomeObjectClass : INotifyPropertyChanged
{
private string _name = "hello";
public string Name
{
get
{
return _name;
}
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string PropertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
點擊按鈕改變SomeObject.Name,但它更新文本框。
您是否嘗試從XAML中移除「Text =」「'? – user7116