我正在尝试在XAML中使用App.Config Properties.Settings。例如,我将GridMaxWidth的设置添加为500的int。然后在我的XAML中我添加了
<UserControl ...
xmlns:Properties="clr-namespace:MyMainNamespace.Properties"
....>
<SomeControl
MaxWidth={Binding Source={x:Static Properties:Settings.Default},
Mode="OneWay,
Path=GridMaxWidth}">
这很好用。我的问题是:有没有办法减少视觉混乱,并将所有绑定源和模式信息放在资源字典中?我试过把&lt; binding&gt;资源文件中的属性,但xaml无法看到它。
答案 0 :(得分:1)
大多数时候Bindings是为了好而不应该自定义创建的,所以在代码中创建绑定是安全的:
实施例
public class MaxWidthBidning: MultiBinding
{
public MaxWidthBidning()
{
this.Bindings.Add(...)
...
}
}
这种方法在处理带转换器的庞大MultiBindings时有很大帮助,将5 ++行XAML转换为一个。
<local:Control ComplexProperty={local:MaxWidthBidning} />
更新1 - 谈到减少“视觉混乱”一般我可以称之为我们使用的两种主要技术:
对于非密封对象,由XAML接受(注意,某些派生对象由于某种原因不能在XAML中使用(预期确切的类型匹配而不是对IsDervied的检查) - 所以总是先尝试一下。例如Bidning - 你可以创建一个从Binding中衍生出的类并硬连接这些东西(单独的MultiBinding路径和转换器),它不应该在XAML中修改。
对于密封对象,例如 - DoubleAnimationUsingKeyFrames - 您可以创建一个附加行为,类似'StreamlinedAnimation.Definition',并使用它在代码中创建笨重的部分。因此,您的动画将如下所示:
<DoubleAnimationUsingKeyFrames local:StreamlinedAnimation.Definiton="Some Encoded information to be used for creating Frames" />