バインドしている場合-代わりにXAMLでそれを実行しないのはなぜですか?あなたのコードを見ると、それはちょっと無意味です-あなたはただ行くほうがよいでしょう
Footer_text.Text = "Setting";
理想的にはXAMLで行うか、少なくともバインドするための何かを提供する必要があります
<TextBlock Text="{Binding SomeProperty}" />
なぜそれ自体で「文字列」を何かにバインドするのかわかりません...textプロパティにバインドする必要のあるオブジェクトがありますか?
また使用
Binding("")
それは何をしますか?空白のパス?バインディングターゲットがそこにあるかわからない...あなたは試しましたか
Binding()
代わりは?
編集:
また、バインディングがコントロールを更新しない理由は、おそらくINotifyPropertyChangedまたは同様のインターフェイスを実装するオブジェクトにバインドしていないためです。コントロールは値がいつ変更されたかを知る必要があるため、「string」にバインドしても、変更されたときに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が変更されますが、テキストボックスが更新されます。