Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 覆盖registeredName_Wpf_Storyboard - Fatal编程技术网

Wpf 覆盖registeredName

Wpf 覆盖registeredName,wpf,storyboard,Wpf,Storyboard,我有一个方法,当调用它时,它会返回一个带有随机颜色的GradientStop的LinearGradientBrush,并在它们上使用mylabel.RegisterName,以便以后在情节提要动画中使用。 为了防止在没有注册名称的情况下第一次调用时出错,我执行以下操作: try { myLabel.UnregisterName("GS1"); myLabel.UnregisterName("GS2"); myLabel.UnregisterName("GS3");

我有一个方法,当调用它时,它会返回一个带有随机颜色的
GradientStop
LinearGradientBrush
,并在它们上使用
mylabel.RegisterName
,以便以后在
情节提要
动画中使用。 为了防止在没有注册名称的情况下第一次调用时出错,我执行以下操作:

try
{
    myLabel.UnregisterName("GS1");
    myLabel.UnregisterName("GS2");
    myLabel.UnregisterName("GS3");
    myLabel.UnregisterName("GS4");
}
catch
{
}
我没有找到覆盖注册名称的方法。有更好的方法吗?

取消注册名怎么样

(这就是我在只能阅读部分问题时试图回答的结果…)

再仔细研究一下,可能会发现另一种(更简单的)选择:

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;
}

哈-显然不是;抱歉,当我在手机上读到这些信息时,我的手机视图中的信息被切断了。当我回到我的电脑时,我将重新访问。@Christian抱歉,为了您的时间和一个好的选择,我修改了答案+1。我更喜欢它,而不是
try catch
,以避免出现明显的异常。我明天会测试它。不用担心-FWIF,您希望在GetNameScope和FindName之间进行空检查;它可以返回null。从不使用
DependencyObject做什么?