如何实现将另一个控件重新定义为属性的混合/wpf附加行为



我正在尝试实现一个在对象上有效但受第二个对象影响的行为。

例如,它将根据另一个框架元素的距离来更改框架元素的外观。

我对附加行为非常了解,我会这样定义我的类:

public class ChangeWithDistance : Behavior<FrameworkElement>

在行为的某个地方,我需要一个指向另一个控件的名称(?)的依赖属性。

我应该使依赖属性成为什么类,以便使此行为指向另一个控件?

我会将propdp指定为表示其他控件名称的字符串吗?

或者我应该使用另一个类来表示与控件相关联的标签(你知道,x:Name business..)

或者propdp应该指向这样的框架元素?

public static readonly DependencyProperty OtherControl =     
DependencyProperty.Register("OtherControl", typeof(FrameworkElement)

还是我做了一些绑定的事情?

是否有将行为或任何具有依赖属性的东西指向另一个控件的最佳实践?

有没有办法让它显示出来,这样使用混合的用户就可以选择另一个控件?

我很幸运地将我的依赖属性声明为:

public static readonly DependencyProperty OtherObjectProperty =
DependencyProperty.Register("OtherObject", typeof (FrameworkElement), typeof (MyBehavior), new UIPropertyMetadata());

然后在XAML中,将它绑定到我感兴趣的另一个对象,如下所示:

<Rectangle ....>
<Interactivity:Interaction.Behaviors>
<Controls:MyBehavior OtherObject="{Binding ElementName=TheOtherElementNameIWantToReference}" />
</Interactivity:Interaction.Behaviors>
</Rectangle>                   

这里面有很多问题。阅读附加属性:http://msdn.microsoft.com/en-us/library/ms749011.aspx

简而言之,您需要使用RegisterAttached方法,而不是Register方法。

最新更新