0
我在主應用程序中有一個狀態欄,用於即時創建其他用戶控件。我想公開狀態欄,以便子用戶控件可以更新狀態欄。主應用程序的數據上下文被設置爲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')
方法1工作得很好。謝謝。 爲了學習,我嘗試了第二種方法。但是,它沒有工作。我都嘗試 ' ' 和 ' ' –
Unplug
它應該工作..你有沒有去除你設置綁定的代碼隱藏代碼?你也可以檢查它是否在輸出窗口中給出一些錯誤? – Nitin
我註釋了這兩行 '//綁定statusBinding =新綁定(「狀態」);' '//CurrentStatus.SetBinding(TextBlock.TextProperty,statusBinding);' 沒有錯誤。 – Unplug