WPFでアプリケーション作成を行っているのですが、フレームワークにPrismを使用しています。
書いているコードは一部省略していますが、以下の通りです。
XML
1<Window xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 2 xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 3 xmlns:ri="clr-namespace:Reactive.Bindings.Interactivity;assembly=ReactiveProperty.NET46"> 4 5 <Grid> 6 <ContentControl prism:RegionManager.RegionName="ViewA"> 7 <i:Interaction.Triggers> 8 <ei:DataTrigger Binding="{Binding ValueA}" > 9 <ri:EventToReactiveCommand Command="{Binding CommandA}" /> 10 </ei:DataTrigger> 11 </i:Interaction.Triggers> 12 </ContentControl> 13 </Grid> 14</Window>
C#
1 public IRegionManager regionManager = null; 2 public static ReactiveProperty<int> ValuA{ get; set; } 3 public ReactiveCommand CommandA{ get; } 4 5 public WindowViewModel(IRegionManager rm) 6 { 7 regionManager = rm; 8 ValuA= new ReactiveProperty<int>(); 9 10 this.CommandA= new ReactiveCommand() 11 .AddTo(this.disposables); 12 this.CommandA.Subscribe(_ => this.Change(ValuA.Value)); 13 } 14 15 private void Change(int ValuA) 16 { 17 string viewName = string.Empty; 18 switch (ValuA) 19 { 20 case 0: 21 viewName = "StringA"; 22 break; 23 case 1: 24 viewName = "StringB"; 25 break; 26 case 2: 27 viewName = "StringC"; 28 break; 29 default: 30 viewName = "StringD"; 31 break; 32 } 33 regionManager.RequestNavigate("ViewA", viewName); 34 }
ValuAの値が変更されたとき、画面が更新されると思ったのですが、以下のエラーが出ます。
XDG0008 名前 "DataTrigger" は名前空間 "http://schemas.microsoft.com/expression/2010/interactions" に存在しません。 XLS0414 型 'ei:DataTrigger' が見つかりませんでした。アセンブリ参照が失われていないか、また、すべての参照アセンブリがビルドされているかどうかを確認してください。
interactivityはPrismをインストールすると一緒に参照されると思うのですが、interactionsはされていないのでしょうか?
また、interactionsをBlend SDKから参照すると以下のエラーが出ます。
XDG0060 アセンブリ 'ReactiveProperty.NET46' からの型 'EventToReactiveCommand' は Blend SDK の古いバージョンでビルドされているため、Windows Presentation Framework 4 プロジェクトではサポートされません。
これらのエラーを解決する方法はありますでしょうか?
また、別の方法で解決する方法があれば教えてください。よろしくお願いいたします。
追記
Microsoft.SDK.Expression.BlendをNuGetすることでエラーは解消されました。
しかし、ValueAの値を変更しても画面が更新されません。
引き続きよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。