好的Stackers,我在这个问题上花了好几个小时,我想知道是否有人有明确的答案.
对于所有的研究,我已经做了,我找不到任何区别.Register,并.RegisterAttached在Silverlight中.现在,在你跳枪并告诉我.RegisterAttached用于将DP附加到另一个类之前,尝试使用实现附加的依赖属性DependencyProperty.Register().我发现没有一个区别,所以我不知道有什么区别.
此外,在我的具体情况下,我试图扩展Grid类的功能,并希望给它一些额外的属性.因此,我尝试列出传递两者typeof(Grid)和typeof(FluidLayoutManager)(实现类)作为ownerType参数,它似乎也没有什么区别...(我相信当我从同一名称空间传递两个自定义类时它确实有所作为但是,当传递Microsoft定义的类与自定义类时,我总是将它作为自定义类的DP显示在XAML中.)
对此主题的任何澄清将非常感激,因为我坐在这里抓我的头,并想知道是否有任何差异,或者微软是否只是再次与我搞砸了.
不幸的是,我发现有时我编写的代码虽然在运行时非常好,但在使用Visual Studio 2010中的XAML/Designer时会让我感到头疼.我最喜欢的例子包括多个MessageBox用于调试出现,但是,当前示例是构造函数中非常轻的Singleton样式条件,这意味着当我想在XAML中更改实例时,我必须重建解决方案.
是否有一个预处理器指令可用于跳过XAML设计器中的代码?
例:
public class CustomFE : FrameworkElement
{
public CustomFE()
{
#if !XAMLDesigner // Or something similar
if (_instance != null)
throw new NotSupportedException("Multiple instances not supported");
#endif
_instance = this;
}
private static CustomFE _instance = null;
public static CustomFE Instance
{
get { return _instance; }
}
}
Run Code Online (Sandbox Code Playgroud) 我已经尝试了一段时间来创建一个类/系列的类,在检测到相关对象中的调整大小时,尝试暂停对象的大小调整并为其创建平滑的调整大小动画.但是,在动画开始播放之前,我一直遇到屏幕上对象"闪烁"一秒钟的问题.
长话短说,经过一些严肃的调试和自我怀疑,我的印象是Storyboard.Begin(),在下一个时钟滴答之前,调用不会影响目标值.我认为这与Storyboard.Seek()在下一个时钟滴答之前没有发生有关.(请参阅MSDN参考).因此,在动画踢出之前,对象在单个帧上采用其新高度,将其拉回到起始高度.
我花了很长时间试图让它工作,因为它不像看起来那么简单.我无法设置FrameworkElement.Height为e.PreviousSize.Height在FrameworkElement.SizeChanged事件处理程序,因为这会影响对象的"真实"的高度.作为为什么这不起作用的一个例子,如果在播放动画时某些东西改变了对象的"真实"高度,那么重新设置FrameworkElement.Height到动画开始时收集的目标高度可能会将其设置为不正确,过时的价值.
还有更多我尝试过的东西,我相信它们会在答案到来时出现,但是你们的任何想法都会非常感激.