3

LinearGradientBrush呼び出されたときにランダムな色のを返すメソッドがあり、後でアニメーションで使用GradientStopするために使用します。登録名が存在しない最初の呼び出しでのエラーを防ぐために、私はこれを行います:mylabel.RegisterNamestoryboard

try
{
    myLabel.UnregisterName("GS1");
    myLabel.UnregisterName("GS2");
    myLabel.UnregisterName("GS3");
    myLabel.UnregisterName("GS4");
}
catch
{
}

登録名を上書きする方法が見つかりません。これを行うためのより良い方法はありますか?

4

1 に答える 1

4

どうUnregisterNameですか?

質問の一部しか読めないときに答えようとすると、それが得られます...

もう少し掘り下げて、別の(はるかに簡単な)代替案を見つけたかもしれません:

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;
}
于 2012-12-31T22:10:07.637 に答える