Friday, April 20, 2012

Binding To Singleton Class Observable Collection Member

I just can't seem to figure this out. I found some similar Questions here but either I can't figure out the right direction for my approach or I am doing something completly wrong.



My Application has a Singleton Class Logger, which saves Log messages from every class in my program.



public class Logger
{
private Logger()
{

}

private static volatile Logger instance;

public static Logger GetInstance()
{
// DoubleLock
if (instance == null)
{
lock (m_lock)
{
if (instance == null)
{
instance = new Logger();
}
}
}
return instance;
}

//Helper for Thread Safety
private static object m_lock = new object();

private ObservableCollection<string> _Log;

public ObservableCollection<string> Log
{
get { return _Log; }
}

public void Add(string text)
{
if (_Log == null)
_Log = new ObservableCollection<string>();

Log.Add(DateTime.Now.ToString() + " " + text);
}

public void Clear()
{
_Log.Clear();
}

}


Now I want to bind Log to ListBox in my MainWindow, but I can't figure out the right Binding



<ListBox Name="lstboxLog" Grid.Row="2" Margin="10,0,10,10" ItemsSource="{Binding Source={x:Static tools:Logger.Log}}" Height="100" />


tools is the namespace of the singleton class in my XAML. I'm sure this is simpler than I think, but I am just overlooking something.





No comments:

Post a Comment