File: StackTraceExplorer\StackTraceExplorer.xaml.cs
Web Access
Project: src\src\VisualStudio\Core\Def\Microsoft.VisualStudio.LanguageServices_pxr0p0dn_wpftmp.csproj (Microsoft.VisualStudio.LanguageServices)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Windows;
using System.Windows.Automation.Peers;
using System.Windows.Controls;
 
namespace Microsoft.VisualStudio.LanguageServices.StackTraceExplorer;
 
/// <summary>
/// Interaction logic for CallstackExplorer.xaml
/// </summary>
internal partial class StackTraceExplorer : UserControl
{
    public readonly StackTraceExplorerViewModel ViewModel;
 
    public StackTraceExplorer(StackTraceExplorerViewModel viewModel)
    {
        DataContext = ViewModel = viewModel;
        InitializeComponent();
 
        DataObject.AddPastingHandler(this, OnPaste);
    }
 
    private void OnPaste(object sender, DataObjectPastingEventArgs e)
        => OnPaste();
 
    private void CommandBinding_Executed(object sender, System.Windows.Input.ExecutedRoutedEventArgs e)
        => OnPaste();
 
    public void OnPaste()
    {
        var text = Clipboard.GetText();
        ViewModel.OnPaste_CallOnUIThread(text);
    }
 
    private void ListViewItem_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        if (ViewModel.Selection is StackFrameViewModel stackFrameViewModel)
        {
            stackFrameViewModel.NavigateToSymbol();
        }
    }
 
    internal void OnClear()
    {
        ViewModel.OnClear();
    }
 
    private void TextBlock_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        var textBlock = (TextBlock)sender;
 
        if (textBlock.IsVisible)
        {
            var peer = FrameworkElementAutomationPeer.FromElement(textBlock);
            peer?.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
        }
    }
}