Переопределить поведение всплывающей подсказки по умолчанию WPF - PullRequest
0 голосов
/ 06 февраля 2020

В настоящее время я тестирую некоторые решения для карт BING в приложении WPF. У меня есть одна карта, и я помещаю на нее несколько булавок. Каждая булавка должна иметь всплывающую подсказку с изображением и текстом. Это то, чего я достиг, но дело в том, что я не знаю, как переопределить поведение всплывающей подсказки по умолчанию, в частности, я хочу отключить отображение всплывающей подсказки в MouseEnter и расцепление всплывающей подсказки в MouseLeave, что присутствует в поведении по умолчанию. Вот мой Xaml и код:

<mapItems:Map x:Name="MainMap" CredentialsProvider="my_api_key" Center="43.3216408,21.8959319" ZoomLevel="12">

        <mapItems:Pushpin x:Name="pinPozoriste" Location="43.320214,21.899104" MouseDown="pin_MouseDown">
            <mapItems:Pushpin.ToolTip>
                <ToolTip x:Name="pozoristeTooltip">
                    <Grid>
                        <Image Source="https://visitnis.com/wp-content/uploads/2018/01/narodno-pozoriste-nis-the-national-theater-nis-1170x521.jpg" Width="426" Height="240"></Image>
                        <TextBlock Text="Narodno pozoriste"></TextBlock>
                    </Grid>
                </ToolTip>
            </mapItems:Pushpin.ToolTip>
        </mapItems:Pushpin>

        <mapItems:Pushpin x:Name="pinBubanj" Location="43.3052551,21.8702683" MouseDown="pin_MouseDown">
            <mapItems:Pushpin.ToolTip>
                <ToolTip x:Name="bubanjTooltip">
                    <Grid>
                        <Image Source="https://visitnis.com/wp-content/uploads/2017/09/spomenik-bubanj-bubanj-memorial-site-1170x521.jpg" Width="426" Height="240"></Image>
                        <TextBlock Text="Spomen park Bubanj"></TextBlock>
                    </Grid>
                </ToolTip>
            </mapItems:Pushpin.ToolTip>
        </mapItems:Pushpin>

</mapItems:Map>

И код C#:

private List<ToolTip> allTooltips;

    public MainWindow()
    {
        InitializeComponent();
        allTooltips = new List<ToolTip>();
        allTooltips.Add(pozoristeTooltip);
        allTooltips.Add(bubanjTooltip);
    }

    private void pin_MouseDown(object sender, MouseButtonEventArgs e)
    {
        foreach(ToolTip t in allTooltips)
        {
            t.IsOpen = false;
        }
        ((ToolTip)((FrameworkElement)sender).ToolTip).IsOpen = !((ToolTip)((FrameworkElement)sender).ToolTip).IsOpen;
    }

    private void closeActivePin(object sender, MouseButtonEventArgs e)
    {
        ((ToolTip)((FrameworkElement)sender).ToolTip).IsOpen = false;
    }
...