Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何指定';在单元格模板中使用的仅在工具提示出现时执行?_C#_Wpf - Fatal编程技术网

C# 如何指定';在单元格模板中使用的仅在工具提示出现时执行?

C# 如何指定';在单元格模板中使用的仅在工具提示出现时执行?,c#,wpf,C#,Wpf,我正在开发一个用户控件,它可以显示人们的名字和姓氏、与他们相关的机构以及数据网格中的其他项。在本次讨论中,最重要的是他们的社会保险号的最后4位数字。我们加密SSN,所以为了显示SSN,我必须解密它。然而,我的同事编写了加密/解密代码并对其进行了测试,他说,他所做的测试导致代码在45分钟内运行,而我们所有的数据都是关于人的。显然,如果渲染数据网格需要45分钟,没有人会等待用户控件出现 因此,我的老板让我在SSN列中放置一些文本,说明它是隐藏的,然后当用户将鼠标悬停在控件上时,它会弹出一个工具提示,

我正在开发一个用户控件,它可以显示人们的名字和姓氏、与他们相关的机构以及数据网格中的其他项。在本次讨论中,最重要的是他们的社会保险号的最后4位数字。我们加密SSN,所以为了显示SSN,我必须解密它。然而,我的同事编写了加密/解密代码并对其进行了测试,他说,他所做的测试导致代码在45分钟内运行,而我们所有的数据都是关于人的。显然,如果渲染数据网格需要45分钟,没有人会等待用户控件出现

因此,我的老板让我在SSN列中放置一些文本,说明它是隐藏的,然后当用户将鼠标悬停在控件上时,它会弹出一个工具提示,显示SSN的最后4个。起初,我认为这很容易做到,但后来我意识到,当我过去这么做时,我检索了所有数据,然后显示了工具提示中没有显示的内容。我不能那样做。那么,我该如何使它在工具提示弹出时,只会检索给定ID的SSN,然后显示SSN的最后4个

以下是我目前拥有的,首先是我为工具提示创建的样式:


以下是我为datagrid列提供的XAML:


当前它显示ID值。这个ID值是我需要用来调用我同事编写的存储过程来解密SSN的


我使用的是VS 2019、.NET 4.5.2

例如,您可以在
工具提示中为
文本块
处理
加载的
事件,如下所示:

private async void TextBlock_Loaded(object sender, RoutedEventArgs e)
{
    TextBlock textBlock = (TextBlock)sender;
    int id = (textBlock.DataContext as Person)?.ID;
    string ssn = await Task.Run(() => { /*call SP and return the SSN here...*/ });
    textBlock.Text = ssn;
}
XAML:

<DataTemplate>
    <TextBlock Text="Hidden"
               Foreground="DarkOrange"
               Background="Aquamarine"
               Margin="3,1"
               Style="{StaticResource DelayToolTip}"
               Padding="3">
        <TextBlock.ToolTip>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="SSN: " FontWeight="Bold" />
                <TextBlock Text="Loading...." Loaded="TextBlock_Loaded" />
            </StackPanel>
        </TextBlock.ToolTip>
    </TextBlock>
</DataTemplate>

有一个事件