2014-02-12 3 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입니다 : 아니, 난 문자열 속성에 connectionStatus를 바인딩하기 위해 노력하고있어

 <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가 업데이트 된 것을 볼 수 있습니다. 여기에 무엇이 잘못된지에 대한 제안이 있습니까?

+0

당신은 당신의 윈도우의 데이터 컨텍스트를 설정 했습니까? – 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