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

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

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

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

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

5504閲覧

[WPF+Prism]ViewとViewModelをバインドさせたい(DataTriggerの使用方法について)

tomo38

総合スコア15

C#

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

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/01/28 23:37

編集2019/01/29 01:46

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の値を変更しても画面が更新されません。
引き続きよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。

ValueA.Valueとすると動作しました。

XML

1<ei:DataTrigger Binding="{Binding ValueA.Value}" > 2

投稿2019/01/29 02:56

tomo38

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問