如何将绑定信息放入资源中



我正在尝试使用App.Config属性。XAML中的设置。例如,我将GridMaxWidth设置为500。然后在XAML中添加

<UserControl ...
    xmlns:Properties="clr-namespace:MyMainNamespace.Properties"
    ....>
<SomeControl 
    MaxWidth={Binding Source={x:Static Properties:Settings.Default},
                      Mode="OneWay,
                      Path=GridMaxWidth}">

这很好。我的问题是:是否有某种方法可以减少视觉混乱,并将所有绑定源和模式信息放在资源字典中?我试着把属性,但是xaml无法看到它

大多数情况下,绑定是永久创建的,不应该自定义,所以在代码中创建绑定是安全的:

例子
public class MaxWidthBidning: MultiBinding
{
   public MaxWidthBidning()
   {
      this.Bindings.Add(...)
      ...
   }
}

该方法在处理带有转换器的庞大MultiBindings时非常有用,可以将5++行XAML转换为一行。


<local:Control ComplexProperty={local:MaxWidthBidning} />

更新1 -谈到减少"视觉混乱",我可以称之为我们使用的两种主要技术:

  1. 对于非密封对象,被XAML接受(注意,一些派生对象由于某种原因不能在XAML中使用(期望精确的类型匹配而不是检查IsDervied) -所以总是在尝试之前。一个例子是绑定——你可以创建一个从绑定派生的类,并硬连接这些东西(单独的MultiBinding路径&

  2. 对于密封对象,例如- DoubleAnimationUsingKeyFrames -你可以创建一个附加的行为,就像'StreamlinedAnimation '。并使用它在代码中创建庞大的部分。因此,你的动画看起来像:


<DoubleAnimationUsingKeyFrames local:StreamlinedAnimation.Definiton="Some Encoded information to be used for creating Frames" />

最新更新