【发布时间】:2023-07-11 10:25:01
【问题描述】:
为了使用模式匹配来清理我的代码,我需要找到某个公共属性继承自的公共基类。
在以下示例中,sender 是一个 wpf DataTemplate,由一个 Grid 和几个 UIElement 组成。我想用数据模板的源启动一个拖动事件,一个可以从任何对象的DataContext 属性访问的Vehicle。
我需要找到我的UIElements 继承DataContext 属性的公共基类,以便编写干净的代码:
private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
if (e.Source is CommonBaseClassFromWhichDataContextPropertyIsInherited obj)
{
var vehicle = obj.DataContext;
DataObject data = new DataObject();
data.SetData(typeof(Vehicle), vehicle);
DragDrop.DoDragDrop(this, data, DragDropEffects.Move);
}
}
}
@thatguy 回答了我的例子:FrameWorkElement 是我正在寻找的类。
但我的问题更多的是关于确定基类的方法:您是否浏览元数据?有智能感知功能吗?
【问题讨论】:
-
选择
DataContext并按F12(转到定义) -
好的,谢谢。这个简短的答案在那个人更“完整”的答案中丢失了
标签: c# wpf inheritance pattern-matching