我试图将动态行为绑定到WPF逻辑和可视树之外的可视元素.
我的问题是RadChart图的颜色是在(准路径)中给出的:RadChart.SeriesMapping.LineSeriesDefinition.Appearance.Stroke
我原本想将它绑定到XAML中图表datacontext的属性.天真地,我刚刚写了一个普通的{Binding PlotBrush}
编译器返回"找不到Governing FrameWorkelement"错误.在阅读之后,我认为这意味着在层次结构中解析datacontext不起作用.因为它的祖先(XAML说话)具有除FrameWorkElement之外的其他类型和其他关系,而不是内容控件的内容.至少,这是我目前对它的理解.请指正.
所以,我找到了"DataContext Bridge" http://www.codeproject.com/KB/WPF/AttachingVirtualBranches.aspx
简单地说,它说你绑定是在分配DataContext的运行时框架元件(未任何那些继承了它)的DataContext属性到一个的DataContext的资源范围内FrameworkElement的实例.然后使用相同的资源对象实例绑定到您希望"附加"到DataContext继承动态的"分支"的datacontext属性.但该文章的作者很幸运能够实现被观察财产的验证用户.SolidColorBrush是密封的,我想即使使用装饰器也可以实现一个完整的画笔.
就我而言,这并没有帮助我做我想做的事情,但我"非常接近".所以我想知道是否有某些方面的XAML技巧可以帮助我.
<Window.Resources>
<local:FrameWorkElement x:Key="DataContextBridge"/>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
但是,目前还不清楚我是如何利用它的.没有应该设置datacontext的对象.AppearanceSettings不是FrameWorkElement.
<telerik:SeriesAppearanceSettings>
<telerik:SeriesAppearanceSettings.Stroke>
Ok, how do I use the fact that I can access the datacontext here?
</telerik:SeriesAppearanceSettings.Stroke>
</telerik:SeriesAppearanceSettings>
Run Code Online (Sandbox Code Playgroud)
所以,下一步是我可以直接以某种方式获得画笔对象.我尝试过这种事情,只是搞乱:
.cs:
public class ObservableBrush : FrameworkElement
{
public Brush Brush
{
get { return (Brush) GetValue(BrushProperty); }
set { SetValue(BrushProperty, value); }
}
public static readonly DependencyProperty BrushProperty =
DependencyProperty.Register("Brush", typeof (Brush), typeof (ObservableBrush), new UIPropertyMetadata(new SolidColorBrush(Colors.Black)));
}
Run Code Online (Sandbox Code Playgroud)
XAML的顶部: …
我在ASP.NET Web应用程序上使用Telerik RadChart控件.
这在localhost上运行时工作正常,但现在应用程序已部署到IIS7,并出现以下错误:

为什么是这样?我该如何解决这个问题?
我在一些论坛帖子上看到解决方案是<system.webServer>在web.config中添加以下内容:
<add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode,runtimeVersionv2.0"/>
但是,我已经这样做了,错误仍然出现.
在速度和生成的通知量方面,这段代码是:
ObservableCollection<Foo> foo = new ObservableCollection<Foo>(bar);
this.SomeProperty = foo;
Run Code Online (Sandbox Code Playgroud)
同样如下:
this.SomeProperty = new ObservableCollection<Foo>();
foreach (var v in bar)
{
this.SomeProperty.Add(v);
}
Run Code Online (Sandbox Code Playgroud)
如果它们相同,是否有可能以某种方式关闭生成的通知?
目标: 我正试图加速在Silverlight中显示Telerik RadChart.即使在设置了包含ObservableCollection的属性之后,似乎还需要一段时间才能显示(并在浏览器应用程序中冻结).绘制图表后,一切正常.
radchart ×3
c# ×2
telerik ×2
asp.net ×1
asp.net-4.0 ×1
data-binding ×1
iis-7 ×1
silverlight ×1
wpf ×1
xaml ×1