Wpf 从Drop事件捕获StackPanel的名称
在WPF中,我有以下XAML代码: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
<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)));