2

好的,我会尽力解释。

我有一个方法,“HandleGraphic”。此方法将是..通过对数函数处理给定控件的不透明度。

方法参数有:(object SendingObject, float From, float To)

我的问题是:我如何投射/绑定 SendingObject 以便能够直接操纵它的值/属性?

例如:假设文本框调用 HandleGraphic 方法。HandleGraphic 需要发送控件的 Name 属性“txtbox”来调整它的 Opacity 属性。

必须有一种方法可以实现强制转换或绑定的全局函数,以直接访问调用对象的属性。

例如:SendingObject.Opacity = X;

任何帮助将非常感激。

4

1 回答 1

0

如果您在谈论 WPF(WinForms 控件没有 Opacity 属性),则 Name 和 Opacity 属性都是Control(特别是System.Windows.Controls.Control)的成员。为什么不把 HandleGraphic 的签名改成(Control control, float from, float to)呢?所有控件都派生自 Control,因此您可以将它们中的任何一个传递给该方法。

更正

Name属性是 的成员,FrameworkElement并且该Opacity属性是 的成员UIElement。因此,要同时使用 Name 和 Opacity 属性,您至少需要一个FrameworkElement. Control仍然适用于您的目的,但您可能希望以最小的公分母为目标。例如, aTextBlock不是 a Control,它直接派生自FrameworkElement

WPF 中的控件层次结构是:

Object
DispatcherObject
DependencyObject
Visual
UIElement
FrameworkElement
Control

从那里开始变得复杂。例如:

Button : ButtonBase : ContentControl : Control
TextBox : TextBoxBase : Control
ComboBox : Selector : ItemsControl : Control
DataGrid : MultiSelector : Selector : ItemsControl : Control

但它们都源自 源自Control哪个 源自FrameworkElement

找出类型继承的最简单方法是将插入符号放在代码中的类型上,然后按 F12。这为您提供了一些描述类型的伪代码(或实际代码,如果可用),您可以以相同的方式浏览基类。

于 2012-05-23T16:41:08.417 回答