获取发送控件的名称属性以用于不透明度更改

时间:2012-05-23 16:30:34

标签: c# binding casting opacity graphic

好的,我会尽可能地尝试解释。

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

方法参数是:(对象SendingObject,float From,float To)

我的问题是:如何以直接能够操纵它的值/属性的方式转换/绑定SendingObject?

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

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

例如:SendingObject.Opacity = X;

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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属性,您至少需要FrameworkElementControl仍然可以用于您的目的,但您可能希望以最低的公分为目标。例如,TextBlock不是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

但它们都源自ControlFrameworkElement

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