2014-02-12 2 views
0

Я пытаюсь связать свойство строки, которое будет отображаться в моей строке состояния, если моя база данных подключена. Вот код:Свойство привязки строки к строке строки состояния

C#

public class TimeBase : INotifyPropertyChanged 
{ 
    private DXTickDB db; 
    string[] args = new string[] { }; 

    public event PropertyChangedEventHandler PropertyChanged; 
    private bool isTBconnected; 
    public string connectionStatus { get; set; } 

    public bool tb_isconnected 
    { 
     get { return isTBconnected; } 
     set 
     { 
      if (value != isTBconnected) 
      { 
       isTBconnected = value; 

       if(isTBconnected == false) 
       { 
        connectionStatus = "TimeBase is not connected"; 
       } 
       else 
       { 
        connectionStatus = "TimeBase is connected"; 
       } 

       OnPropertyChanged("connectionStatus"); 
      } 
     } 
    } 

    protected virtual void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 


    #region TimeBase Connection 

    public void ConnectToTimeBase() 
    { 
     if (args.Length == 0) 
      args = new string[] { "not available for security reasons" }; 

     db = TickDBFactory.createFromUrl(args[0]); 
     try 
     { 
      db.open(true); 
      tb_isconnected = true; 
     } 
     catch 
     { 
      tb_isconnected = false; 
     } 

    } 
    #endregion 

Это Xaml для строки состояния в моем главном окне:

 <StatusBar Height="23" DockPanel.Dock="Bottom" Background="Green"> 
     <StatusBarItem> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock 
        Foreground="{StaticResource Foreground}" 
        Text="{Binding Path=connectionStatus}"> 
       </TextBlock> 
      </StackPanel> 
     </StatusBarItem> 
    </StatusBar> 

Я пытаюсь привязать его к свойству строки ConnectionStatus, но нет текст появляется, хотя, когда я его отлаживаю, я вижу, что connectionStatus обновлен. Какие-нибудь предложения о том, что здесь не так?

+0

ли вы установить DataContext вашего окна? – user1064519

+0

Не думаю, что я сделал, как мне это сделать? @ user1064519 – kknaguib

+0

см. мой ответ – user1064519

ответ

2

DataContext свойство должно содержать вашу модель как так:

TimeBase timeBaseInstance; 
    public MainWindow() 
    { 
     timeBaseInstance = new TimeBase(); 

     //Set the dataContext so bindings can iteract with your data 
     DataContext = timeBaseInstance; 
     InitializeComponent(); 
    } 
+0

Спасибо! @ user1064519 – kknaguib

Смежные вопросы