|
|
@ -111,29 +111,31 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer |
|
|
|
if (listViewScroller != null) { |
|
|
|
if (listViewScroller != null) { |
|
|
|
listViewScroller.ScrollToVerticalOffset(0); |
|
|
|
listViewScroller.ScrollToVerticalOffset(0); |
|
|
|
} |
|
|
|
} |
|
|
|
Value val = null; |
|
|
|
Value shownValue = null; |
|
|
|
|
|
|
|
ICSharpCode.NRefactory.Ast.Expression shownExpr = null; |
|
|
|
try { |
|
|
|
try { |
|
|
|
val = debuggerService.GetValueFromName(txtExpression.Text); |
|
|
|
shownExpr = debuggerService.GetExpression(txtExpression.Text); |
|
|
|
|
|
|
|
shownValue = shownExpr.Evaluate(debuggerService.DebuggedProcess); |
|
|
|
} catch(GetValueException) { |
|
|
|
} catch(GetValueException) { |
|
|
|
// display ex.Message
|
|
|
|
// display ex.Message
|
|
|
|
} |
|
|
|
} |
|
|
|
if (val != null && !val.IsNull) { |
|
|
|
if (shownValue != null && !shownValue.IsNull) { |
|
|
|
GridValuesProvider gridValuesProvider; |
|
|
|
GridValuesProvider gridValuesProvider; |
|
|
|
// Value is IList
|
|
|
|
// Value is IList
|
|
|
|
DebugType iListType, listItemType; |
|
|
|
DebugType iListType, listItemType; |
|
|
|
if (val.Type.ResolveIListImplementation(out iListType, out listItemType)) { |
|
|
|
if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType)) { |
|
|
|
gridValuesProvider = CreateListValuesProvider(val.ExpressionTree, iListType, listItemType); |
|
|
|
gridValuesProvider = CreateListValuesProvider(shownExpr, iListType, listItemType); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// Value is IEnumerable
|
|
|
|
// Value is IEnumerable
|
|
|
|
DebugType iEnumerableType, itemType; |
|
|
|
DebugType iEnumerableType, itemType; |
|
|
|
if (val.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType)) { |
|
|
|
if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType)) { |
|
|
|
// original
|
|
|
|
// original
|
|
|
|
/*var lazyListViewWrapper = new LazyItemsControl<ObjectValue>(this.listView, initialIEnumerableItemsCount); |
|
|
|
/*var lazyListViewWrapper = new LazyItemsControl<ObjectValue>(this.listView, initialIEnumerableItemsCount); |
|
|
|
var enumerableValuesProvider = new EnumerableValuesProvider(val.ExpressionTree, iEnumerableType, itemType); |
|
|
|
var enumerableValuesProvider = new EnumerableValuesProvider(val.ExpressionTree, iEnumerableType, itemType); |
|
|
|
lazyListViewWrapper.ItemsSource = new VirtualizingIEnumerable<ObjectValue>(enumerableValuesProvider.ItemsSource); |
|
|
|
lazyListViewWrapper.ItemsSource = new VirtualizingIEnumerable<ObjectValue>(enumerableValuesProvider.ItemsSource); |
|
|
|
gridValuesProvider = enumerableValuesProvider;*/ |
|
|
|
gridValuesProvider = enumerableValuesProvider;*/ |
|
|
|
DebugType debugListType; |
|
|
|
DebugType debugListType; |
|
|
|
var debugListExpression = DebuggerHelpers.CreateDebugListExpression(val.ExpressionTree, itemType, out debugListType); |
|
|
|
var debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType); |
|
|
|
gridValuesProvider = CreateListValuesProvider(debugListExpression, debugListType, itemType); |
|
|
|
gridValuesProvider = CreateListValuesProvider(debugListExpression, debugListType, itemType); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// Value cannot be displayed in GridVisualizer
|
|
|
|
// Value cannot be displayed in GridVisualizer
|
|
|
|