質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

3122閲覧

【UWP】UserControlのアニメーションが出来ない

mqbdr

総合スコア37

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2016/05/28 14:31

###前提・実現したいこと
UWPのUserControlをStoryboardを使ったアニメーションで動かしたいと思っています。
後述のコードを実行したところ、MainPageでStoryboard.Begin()を実行したタイミングで以下の例外が発生しました。
UserControlで独自に追加したプロパティ(HogeValue)をStoryboardのターゲットプロパティにするにはどうしたらよいのでしょう。

宜しくお願い致します。

###エラーメッセージ

例外がスローされました: 'System.Runtime.InteropServices.COMException' (mscorlib.ni.dll の中) WinRT 情報:Cannot resolve TargetProperty HogeValue on specified object.

###該当のソースコード

** MyTextBlock.xaml.cs **

C#

1 public sealed partial class MyTextBlock : UserControl 2 { 3 public static readonly DependencyProperty HogeValueProperty = DependencyProperty.Register( 4 "HogeValue", 5 typeof(MyTextBlock), 6 typeof(double), 7 new PropertyMetadata(0d, (sender, ev) => 8 { 9 var control = (MyTextBlock)sender; 10 if (control != null) 11 { 12 control.OnHogeValueChanged(); 13 } 14 })); 15 16 public double HogeValue 17 { 18 get { return (double)GetValue(HogeValueProperty); } 19 set { SetValue(HogeValueProperty, value); } 20 } 21 22 private void OnHogeValueChanged() 23 { 24 HogeText.Text = HogeValue.ToString(); 25 } 26 27 public MyTextBlock() 28 { 29 this.InitializeComponent(); 30 } 31 }

** MyTextBlock.xaml **

XML

1<UserControl 省略...> 2 <Grid> 3 <TextBlock x:Name="HogeText"/> 4 </Grid> 5</UserControl>

MainPage.xaml.cs

C#

1 2 public sealed partial class MainPage: Page 3 { 4 public MainPage() 5 { 6 this.InitializeComponent(); 7 } 8 9 private void Button_Tapped(object sender, TappedRoutedEventArgs e) 10 { 11 Storyboard hogeStoryboard = new Storyboard(); 12 13 DoubleAnimation hogeAnimation = new DoubleAnimation 14 { 15 Duration = TimeSpan.FromSeconds(10), 16 From = 0d, 17 To = 100d, 18 }; 19 hogeAnimation.EnableDependentAnimation = true; 20 Storyboard.SetTarget(hogeAnimation, MyText); 21 Storyboard.SetTargetProperty(hogeAnimation, "HogeValue"); 22 hogeStoryboard.Children.Add(hogeAnimation); 23 hogeStoryboard.Begin(); 24 } 25 }

MainPage.xaml

XML

1<Page 省略...> 2 <StackPanel> 3 <ctrl:MyTextBlock x:Name="MyText" HorizontalAlignment="Center" VerticalAlignment="Center" HogeValue="0" /> 4 <Button HorizontalAlignment="Center" VerticalAlignment="Center" Content="Start" Tapped="Button_Tapped"/> 5 </StackPanel> 6</Page>

###試したこと
Storyboard.SetTargetProperty()の第2引数を
"(MyTextBlock.HogeValue)" "(HogeValue)" "MyTextBlock.HogeValue"
に変更してみましたが結果は同じでした。

###補足情報(言語/FW/ツール等のバージョンなど)
C# + XAML
VisualStudio 2015

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
恥ずかしいことにDependencyProperty.Register()の第2引数と第3引数の順番を逆に書いていました(汗

MyTextBlock.xaml.cs

C#

12 public static readonly DependencyProperty HogeValueProperty = DependencyProperty.Register( 3 "HogeValue", 4 typeof(MyTextBlock), 5 typeof(double), 6 new PropertyMetadata(省略...)); 7 89 public static readonly DependencyProperty HogeValueProperty = DependencyProperty.Register( 10 "HogeValue", 11 typeof(double), 12 typeof(MyTextBlock), 13 new PropertyMetadata(省略...));

投稿2016/05/29 03:25

mqbdr

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問