Потребовалось тут отследить актуальное состояние часто меняющегося элемента. Было подозрение, что его кто то обнуляет. Сразу же отмел варианты с написанием логирования через файловую систему: Сильверлайту не разрешено писать, куда ему захочется. Поэтому был написан небольшой расширяющий метод, который выводит отладочную информацию в консоль браузера.
Вызывается очень просто: на объекте нужно просто вызвать метод Log().
Я обычно подготавливаю строку и логирую ее.
Вот так это выглядит в FireFox (для просмотра нужен FireBug):
а вот так в IE8 (нужно только нажать F12 и перейти на вкладку Сценарий):
Этот метод подойдет, если вам нужно при дебаге посмотреть что-нибудь в проекте. Для долговременного логирования лучше конечно использовать Clog. Вот только он не поддерживает Silverlight 3.
public static class Extensions
{
public static void Log(this object obj)
{
HtmlWindow window = HtmlPage.Window;
object isConsoleAvailable =
window.Eval("typeof(console) != 'undefined' && typeof(console.log) != 'undefined'");
if ( (isConsoleAvailable is bool) && (bool)isConsoleAvailable)
{
var console = (window.Eval("console.log") as ScriptObject);
if (console != null)
{
console.InvokeSelf(obj);
}
}
}
}
* This source code was highlighted with Source Code Highlighter.
Вызывается очень просто: на объекте нужно просто вызвать метод Log().
Я обычно подготавливаю строку и логирую ее.
string message = string.Format("{0}: object {1} ScrollPosition = {2}",DateTime.Now.ToShortTimeString(),((ItemsControl)d).Name,e.NewValue.ToString());
message.Log();
* This source code was highlighted with Source Code Highlighter.
Вот так это выглядит в FireFox (для просмотра нужен FireBug):
а вот так в IE8 (нужно только нажать F12 и перейти на вкладку Сценарий):
Этот метод подойдет, если вам нужно при дебаге посмотреть что-нибудь в проекте. Для долговременного логирования лучше конечно использовать Clog. Вот только он не поддерживает Silverlight 3.