問題タブ [caliburn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - Caliburn Micro - UI が 2 回目に更新されない
Caliburn Micro を使用している WPF プロジェクトに取り組んでいます。ビューを 2 回目に開いたときに、ビュー内のコントロールが更新されないという問題が発生しています。初めてデータ バインディングが正常に機能します。
ビューが 2 回目に呼び出されたときに ViewModel をステップ実行すると、データ バインドされたプロパティが新しい値を取得し、NotifyOfPropertyChange() を呼び出していることがわかりますが、変更は UI に反映されていません。何か案は?マイ ビューの継承PropertyChangedBase()
以下はビューモデルの私のプロパティです
とXaml
c# - ネストされたユーザーコントロールのデータコンテキスト
バックグラウンド :-
caliburn micro/ninjectおよびmvvmパターンを使用してビューモデルによって入力されるコンボボックスを含むwpfビューがあります。このビューには、スタックパネル領域も含まれています。ユーザーがコンボボックスから適切なオプションを選択すると、適切なユーザーコントロールをスタックパネルに挿入して、関連する表示への見かけのない遷移をユーザーに提示します。
スタックパネルに表示される各「ネストされた」ユーザーコントロールには、caliburnmicroによって自動的に関連付けられた独自のビューモデルがあります。
問題 :-
「ネストされた」ユーザーコントロールバインディングはすべて、それらに具体的に関連付けられているビューモデルではなく、親ビューモデルを参照しようとします。
最初は、次のように指定することでこれを回避できます:-
ただし、これにはビューモデルにパラメーターのないコンストラクターが必要ですが、NinjectがEventAggregatorなどのオブジェクトを注入できるように、このビューモデルにパラメーターを渡すことができる必要があります。
私はWPFにかなり慣れていないので、円周を回っているので、助けていただければ幸いです。
ありがとう。
ジェームズ。
c# - WPF / Ninject でシングルトン eventAggregator にアクセスする
WPF/Caliburn Micro と Ninject を使用しており、これを呼び出すブートストラップがあります:-
私の理解では、これはオブジェクトがインスタンス化されるたびにコンストラクターのパラメーター リストに挿入されますが、コンストラクターをパラメーターなしにする必要がある場合があります。コンストラクターにパラメーターを指定できない場合、EventAggregator にアクセスするにはどうすればよいでしょうか?
wpf - CaliburnでのViewとViewModel間の相互作用
私はカリバーンの新参者です。
MVVMとCaliburnについていくつか質問があります。
ビューはどのようにしてViewModelで明示的にメソッドを呼び出すことができますか?Caliburnは、最初にViewModelコンストラクターを呼び出します。もしそうなら、インスタンスはどこに含まれるのでしょうか?ビュー内のコードは、現時点で新しいインスタンスを作成します(ViewModelのメソッドを明示的に呼び出す必要があります)。しかし、ViewModelはすでにインスタンス化されているはずですが、これはばかげています。
UIスレッドでバインディングの更新を強制するにはどうすればよいですか?
data-binding - コントロールプロパティをバインドする方法は?
Caliburn.Microの規則ベースのバインディングを使用していますが、小さな問題があります。
バインディングがバインドするプロパティを設定するにはどうすればよいですか?を使用してコントロールを作成する場合、の値をコントロールのプロパティ、コントロールのイベント、またはまたはプロパティなどの別の何かにバインドするx:Name="SomeProperty"
かどうかを選択するにはどうすればよいですか?SomeProperty
Value
OnClick
Content
Tag
例:HyperlinkButton
特定のURLにバインドしたいこれがOnClick
あり、ViewModelのイベントハンドラーにバインドしたい。
ただし、Contentプロパティは、URLの値ではなくRead more
、URLの値で埋められます。この例では、どのようにすればよいですか?
- ナビゲーションURIをViewModelプロパティのURLの値に設定します
- コンテンツを「続きを読む」に設定します
- クリックを処理するイベントハンドラーをViewModelで指定します
誰か助けてくれませんか?
wpf - 同じビューに2つのUserControlを追加できません
2つの子ビューがあるリストビューがあります。1つは表示ビューで、もう1つは編集ビューです。これが私がリスト(親)ビューを定義した方法です。2つの子UserControlが親の異なるスペースを占めるようにしたいことに注意してください。
次に、私のビューモデルでは、次の方法でユーザーの応答に基づいてこれらのアイテムをアクティブ化します
**モデルを表示**
上記のコードは機能しますが、詳細ビューはタブスペース(編集ビュー用のスペース)に読み込まれます。実際には、ActivateItem(viewModel)は表示する正しいタイプのビューを選択しますが、表示ビューの間違った場所にロードされます。つまり、表示ビューは画面上の編集ビューのスペースにロードされます。確かに私はいくつかの明白なものを逃しています。
要約すると、親UserControlで定義された2つのUserControlを取得して、独自のスペースでアクティブ化するにはどうすればよいですか?
編集-1:
これは、編集ビューと詳細ビューをそれぞれロードする必要がある場所を示す2つのスクリーンショットです。
2番目のスクリーンショットでわかるように、詳細ビューは詳細領域と編集領域(タブ)に読み込まれます。詳細ビューだけを詳細領域に表示したくありません。編集領域は編集ビュー専用です。
これが、スクリーンショットを生成するために使用したコードです。
両方のビューを収容するメインビュー
編集2: 私はそれを機能させるのに非常に近いと思います。あなたの提案に従って、私はMain(Parent)コンテナを以下のように変更しました。
編集画面と詳細画面が適切な場所に表示されるようになりました。ただし、Detail ViewModels OnActivateは呼び出されないため、変数が入力されていない空白の詳細ビューが表示されます。詳細ビューフィールドのすべてのロードは、OnActivate()オーバーライドで実行されます。GroupDetailViewModelの定義方法は次のとおりです
確かに、私はいくつかの属性を失っています。または、詳細を手動でロードするためにGroupDetailViewModelのメソッドを呼び出す必要がありますか?
c# - GridControl.ViewのIsEnabledプロパティのバインド
IsEnabled
コンテキストmenuitemでプロパティをバインドしようとしています。コンテキストメニューはDevexpressに配置されますGridControl.View
。
問題はDataContextにあると思います。バーボタンアイテムはHasPermissionDelete
、グリッドのDataContextでプロパティを検索しています。しかし、これはビューモデルのデータコンテキストではありません。私のプロパティHasPermissionDelete
はViewModelにあります。
私はcaliburn.microを使用しています。
このバインディングを修正するのを手伝ってもらえますか?
私のxamlコード:
wpf - イベントが添付されたカリバーン、ターゲットで失敗
わかりましたので、添付イベントをコントロールに追加しようとしています。現在、Caliburn は単純にこれをサポートしていませんが、回避策を提供していると思われる別の記事のコードを使用しました。基本的にこの種のコードを追加する方法が必要ですthis.AddHandler(RadDragAndDropManager.DragInfoEvent, new EventHandler<DragDropEventArgs>(OnDragInfo), true);
が、caliburn は添付イベントをサポートしていません。これが私のコードです:
RoutedEventTrigger は次のように定義されます。
私のViewModelには、次のようなハンドラーがあります。
これを実行すると、なぜこれが機能しないのかを理解するのに苦労しているbase.OnEvent(args);
というエラーが表示されます。No target found for method OnDropQuery.
c# - コンパイル後に WPF と Caliburn C# がウィンドウをレンダリングしない
Caliburn.Micro フレームワークで WPF アプリケーションを作成したいのですが、問題があります。Silverlight のチュートリアルのソースはたくさんありましたが、WPF ではうまくいきませんでした。私は Silverlight チュートリアルのようなものをすべて持っています。すべてがコンパイルされていますが、レンダリングはされていません。
ブートストラップ
AppView
AppModelView
返信ありがとう。
c# - Caliburnによってスローされたメソッドのターゲットが見つかりません
Caliburn.Micro for MVVMを使用して、キャンバスコンポーネントに落書きをスケッチできるアプリケーションを作成しようとしています。アプリケーションを実行してキャンバスをクリックすると、「メソッドOnMouseDownのターゲットが見つかりません」というメッセージが表示されます。例外。MouseDownイベントが呼び出されたときに呼び出されるメソッドを定義しましたが、どういうわけかCaliburnはそれを見つけられません。
プロジェクトファイルはここから入手できます:SketchingTool.zip