2015-04-22 10 views
1

У меня проблемы с привязкой данных с помощью WPF. У меня есть Webservice (WCF) в Windows Service App и приложение WPF для управления службой. В WPF App я создал текстовое поле, где я хочу получать журналы из WebService.WPF DataBinding с другим пространством имен/классом

В этот момент я могу отправлять новые данные из одного и того же пространства имен (приложение WPF), но когда я отправляю его из (приложения WCF) с помощью экземпляра моего класса данных, он не отражает новые данные в текстовом поле.

Вот мой код:

MainWindow.xaml

... 
    <Grid Name="grid" Margin="0,0,346.6,4"> 
     <TextBox Name="Log" Text="{Binding Path=LogText}" ScrollViewer.CanContentScroll="True" IsReadOnly="True" BorderThickness="0" Background="Transparent" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Column="2" Margin="30.8,35,-325.8,0" Height="303" Grid.RowSpan="2" Width="295"/> 
    </Grid> 
... 

MainWindow.xaml.cs

public MainWindow() 
    { 
       InitializeComponent(); 
       grid.DataContext = Logs.Instance; 
       ... 
    } 

public class Logs : INotifyPropertyChanged 
{ 
      private static Logs instance; 

      private Logs() { } 

      public static Logs Instance 
      { 
       get 
       { 
       if (instance == null) 
       { 
        instance = new Logs(); 
       } 
       return instance; 
       } 
      } 

      public event PropertyChangedEventHandler PropertyChanged; 

      protected void Notify(string propName) 
      { 
       if (this.PropertyChanged != null) 
       { 
        PropertyChanged(this,new PropertyChangedEventArgs(propName)); 
       } 
      } 

      private string _LogText = ""; 

      public string LogText 
      { 
       get 
       { 
        return _LogText; 
       } 
       set 
       { 
        _LogText = value; 
        Notify("LogText"); 
       } 
      } 

      public void LogBinding(String text) 
      { 
       LogText = text + LogText; 
      } 
} 

WCF Webservice Send Text Call (Другое пространство имен)

Using "THE NAMESPACE OF WPF APP"; 

Logs.Instance.LogBinding("Some Text"); 

СПАСИБО!

ответ

1

Из вашего описания это похоже на то, что у вас есть два отдельных приложения, которые работают как отдельные процессы. Статические экземпляры не разделяются между процессами, даже если они являются одним и тем же классом. Для передачи данных из службы Windows в ваше приложение WPF вам необходимо использовать некоторую форму передачи по процессам.

+0

Вы правы! мои приложения работают в отдельных процессах !!! Благодарю вас, вы очистите мой разум. Итак, что вы рекомендуете для общения: Что-то вроде Именованных труб? – Fernando

+0

Да, Именованные Трубы могут быть хорошим способом пойти на такую ​​ситуацию. –