Wpf 从Drop事件捕获StackPanel的名称

Wpf 从Drop事件捕获StackPanel的名称,wpf,Wpf,在WPF中,我有以下XAML代码: <Page x:Class="com.MyCo.MyProj.Pages.Configuration.ManageLinkage.MasterLinkage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xam

在WPF中,我有以下XAML代码:

  <Page x:Class="com.MyCo.MyProj.Pages.Configuration.ManageLinkage.MasterLinkage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:local="clr-namespace:com.MyCo.MyProj.Pages.Configuration.ManageLinkage"
  mc:Ignorable="d" 
  d:DesignHeight="450" d:DesignWidth="800"
  Title="MasterLinkage">

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="120"></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <TabControl TabStripPlacement="Top" Background="Transparent">
        <TabItem Header="Import">
            <ListBox Margin="0,5,0,0" Name="lbxImportItems" HorizontalAlignment="Left" VerticalAlignment="Top" Width="110"  Background="Transparent"
                     PreviewMouseLeftButtonDown="lbxImportItems_PreviewMouseLeftButtonDown" >
                <StackPanel Orientation="Vertical" HorizontalAlignment="Center" Name="DBImport">
                    <Image Source="/Images/DBImport25px.png" VerticalAlignment="Center" HorizontalAlignment="Center"></Image>
                    <TextBlock Text="Database" Foreground="AntiqueWhite"/>
                </StackPanel>
                <StackPanel Orientation="Vertical" Name="CSVImport">
                    <Image Source="/Images/CSVImport25px.png" VerticalAlignment="Center" HorizontalAlignment="Center"></Image>
                    <TextBlock Text="CSV Import" Foreground="AntiqueWhite"/>
                </StackPanel>
            </ListBox>
        </TabItem>
    </TabControl>
    <Canvas x:Name="cnvsLinkScreen" AllowDrop="True" Grid.Column="1" Background="Transparent" Drop="cnvsLinkScreen_Drop" DragOver="cnvsLinkScreen_DragOver" ></Canvas>
</Grid>
拖放非常有效,事件方法在画布中创建了图像。但是,我想从丢弃的StackPanel中捕获Name=”“

我发现这个名字埋在“DragEventArgs e”物体的深处。我认为应该有一种方法将对象(或该对象中的对象)转换为StackPanel,以便轻松地使用它。上面的代码没有转换StackPanel对象(它不在根对象或子对象处;我尝试了两者),因此它在“StackPanel objIn=(StackPanel)e.data;”上出现异常


如何将传入对象转换为StackPanel,或者如何从StackPanel访问Name属性?

我知道了。我对翻译很熟悉。要将对象转换/类型转换为您正在使用的对象,我需要使用以下行:

StackPanel objIn = (StackPanel)(e.Data.GetData(typeof(StackPanel)));

这与上面的略有不同。

完成XAML。在提供的代码中,画布不可见,因此无法理解元素的布局。还显示指向“cnvsLinkScreen_Drop”方法的链接在XAML中的位置。只需在布局中添加画布。布局与问题无关,我的问题是关于传递给事件处理程序的数据。。。但是,不管怎样,我根据您的请求添加了XAML的其余部分。
StackPanel objIn = (StackPanel)(e.Data.GetData(typeof(StackPanel)));