我有一种方法,当被调用时会为LinearGradientBrush
返回一个带有随机颜色的GradientStop
,我会在mylabel.RegisterName
上使用这些方法,以便稍后在storyboard
动画中使用。
为了防止在没有注册名称的第一次调用时出错,我这样做:
try
{
myLabel.UnregisterName("GS1");
myLabel.UnregisterName("GS2");
myLabel.UnregisterName("GS3");
myLabel.UnregisterName("GS4");
}
catch
{
}
我还没有找到覆盖注册名称的方法。有更好的方法吗?
答案 0 :(得分:4)
UnregisterName
怎么样?
(当我只能阅读部分问题时,这就是我试图回答的问题...... )
进一步挖掘,可能已找到另一种(WAY更简单)替代方案:
var isGs1Defined = NameScope.GetNameScope(myLabel).FindName("GS1") == null;
或包装得很好:
public static bool IsNameRegistered(DependencyObject depObject, string name)
{
var namescope = NameScope.GetNameScope(depObject);
if(namescope == null)
return false;
return namescope.FindName(name) != null;
}