メイン アプリにステータス バーがあり、その場で他のユーザー コントロールを作成します。子ユーザー コントロールがステータス バーを更新できるように、ステータス バーを公開したいと考えています。メイン アプリのデータ コンテキストは、ConfigurationSettings のインスタンスに設定されます。私の試みはこれです(機能していません):Xamlで:
<StatusBar Grid.Row="2" Name="StatusBar">
<StatusBarItem Grid.Column="0">
<TextBlock Name="CurrentStatus">Ready</TextBlock>
</StatusBarItem>
そして、私が持っているコードビハインド(MainWindowクラス内)
// an inner class for data binding
// ViewModelBase is an class that inherits INotifyPrppertyChanged
class MainViewModel : ViewModelBase
{
public string _Status = "";
public string Status
{
get { return _Status; }
set { _Status = value; OnPropertyChanged("Status"); }
}
}
private MainViewModel _MainViewModel;
public MainWindow()
{
configSettings = new ConfigurationSettings();
InitializeComponent();
this.DataContext = configSettings;
this._MainViewModel = new MainViewModel();
this.StatusBar.DataContext = _MainViewModel;
Binding statusBinding = new Binding("Status");
statusBinding.Source = this._MainViewModel._Status;
CurrentStatus.SetBinding(TextBlock.TextProperty, statusBinding);
}
ViewModelbase は、他のビュー モデルで使用しているため機能します。
私が得たエラーメッセージは次のとおりです。
BindingExpression path error: 'Status' property not found on 'object' ''String' (HashCode=36924794)'. BindingExpression:Path=Status; DataItem='String' (HashCode=36924794); target element is 'TextBlock' (Name='CurrentStatus'); target property is 'Text' (type 'String')