タグ付けされた質問 「wpf」

Windows Presentation Foundation(WPF)は、Windowsベースのアプリケーションでユーザーインターフェイスをレンダリングするためのサブシステムです。

26
ViewModelはどのようにフォームを閉じる必要がありますか?
WPFとMVVMの問題を学習しようとしていますが、問題が発生しました。この質問は似ていますが、これとまったく同じではありません(handling-dialogs-in-wpf-with-mvvm) ... MVVMパターンを使用して書かれた「ログイン」フォームがあります。 このフォームには、通常のデータバインディングを使用してXAMLのビューにバインドされているユーザー名とパスワードを保持するViewModelがあります。また、通常のデータバインディングを使用して、フォームの[ログイン]ボタンにバインドされている[ログイン]コマンドもあります。 「Login」コマンドが起動すると、ViewModelの関数が呼び出され、ネットワークを介してデータが送信されてログインします。この関数が完了すると、2つのアクションがあります。 ログインが無効でした-メッセージボックスを表示するだけで問題ありません ログインは有効でした。ログインフォームを閉じ、trueを返す必要がありDialogResultます... 問題は、ViewModelが実際のビューについて何も知らないため、ビューを閉じて特定のDialogResultを返すように指示するにはどうすればよいですか?CodeBehindにコードを貼り付けたり、ViewをViewModelに渡したりすることはできますが、MVVMのポイント全体を完全に無効にするようです... 更新 結局、MVVMパターンの「純粋さ」に違反し、ビューにClosedイベントを発行させ、Closeメソッドを公​​開させました。その後、ViewModelは単にを呼び出しますview.Close。ビューは、インターフェースを介してのみ認識され、IOCコンテナーを介して配線されるため、テスト性や保守性が失われることはありません。 受け入れられた回答が-5票であるのはかなりばかげているようです!「純粋」でありながら問題を解決することで得られる良い気持ちはよく知っていますが、1行のメソッドを回避するためだけに200行のイベント、コマンド、および動作を考えているのは、私だけではありません。 「パターン」と「純度」の名前は少しばかげています...
247 c#  wpf  mvvm 

6
別のアセンブリのResourceDictionary
複数の個別のアプリケーションで使用したいリソースディクショナリファイル(MenuTemplate.xaml、ButtonTemplate.xamlなど)があります。それらをアプリケーションのアセンブリに追加することもできますが、これらのリソースを1つの単一のアセンブリでコンパイルして、アプリケーションがそれを参照するようにするとよいでしょう。 リソースアセンブリがビルドされた後、アプリケーションのApp.xamlでそれをどのように参照できますか?現在、私はResourceDictionary.MergedDictionariesを使用して、個々の辞書ファイルをマージしています。アセンブリにそれらがある場合、それらをxamlでどのように参照できますか?

22
MVVM:最初から最後までチュートリアル?
ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 私はC#/ Windowsフォームのプログラマーで、5年以上の経験があります。MVVM(Model-View-ViewModel)デザインパターンを使用してWPFを調査しています。チュートリアルをインターネットで検索しました。ジェイソン・ドリンガーの素晴らしいビデオを全部見てきました。私は多くを見つけましたが、最初から最後まで私を連れて行くものを見つけていません。私が本当に欲しいのは、以前のWPFの知識を前提としないチュートリアルです。 学ぶのに役立つお気に入りのWPF-MVVMチュートリアルは何ですか?
243 c#  .net  wpf  mvvm 

6
WPFアプリケーションで例外をグローバルにキャッチしますか?
実行時に例外がスローされるWPFアプリケーションがあります。未処理の例外をグローバルにキャッチしてログに記録しますが、それ以外は何も起こらなかったかのようにプログラムの実行を続行します(VBのようなものOn Error Resume Next)。 これはC#で可能ですか?もしそうなら、例外処理コードをどこに置く必要がありますか? 現在、try/をラップして、catch発生する可能性のあるすべての例外をキャッチできる単一のポイントを確認できません。そして、それでも私はキャッチのために実行されたものは何でも残していたでしょう。または私はここでひどく間違った方向に考えていますか? ETA:以下の多くの人々がそれを指摘したので:アプリケーションは原子力発電所を制御するためのものではありません。クラッシュしたとしても、それほど大きな問題ではありませんが、UIに関連するランダムな例外は、それが使用される状況では問題になります。プラグインアーキテクチャを使用しており、他の人(その場合は学生もいるため、完全にエラーのないコードを記述できる経験豊富な開発者はいない)によって拡張される可能性があるため、いくつかあります(おそらくまだあります)。 キャッチされる例外については、完全なスタックトレースを含めて、ログファイルに記録します。それがその演習の要点でした。文字通り、VBのOERNに私の類推をしている人々に対抗するためだけに。 特定のクラスのエラーを盲目的に無視することは危険であり、アプリケーションインスタンスを破損する可能性があることを知っています。前述のように、このプログラムは誰にとってもミッションクリティカルではありません。彼らの正しい心の中の誰もがその上に人間の文明の生存を賭けないでしょう。これは、特定の設計アプローチをwrtでテストするための単なる小さなツールです。ソフトウェア工学。 アプリケーションをすぐに使用する場合、例外で発生する可能性のあることは多くありません。 例外処理なし–エラーダイアログとアプリケーションは終了します。実験は繰り返される必要がありますが、別の主題で可能性があります。エラーはログに記録されていませんが、残念です。 一般的な例外処理–害のない無害なエラーがトラップされます。これは、開発中に発生したすべてのエラーから判断される一般的なケースです。この種のエラーを無視しても、直接的な影響はありません。コアデータ構造は十分にテストされているため、簡単にこれに耐えることができます。 一般的な例外処理–重大なエラーがトラップされました。後でクラッシュする可能性があります。これはまれに発生する可能性があります。今まで見たことがありません。エラーはとにかく記録され、クラッシュは避けられないかもしれません。したがって、これは概念的には最初のケースと同様です。スタックトレースがあることを除いて。そして、ほとんどの場合、ユーザーは気付くことさえありません。 プログラムによって生成された実験データについて:深刻なエラーは最悪の場合、データが記録されないだけです。実験の結果をほんの少しだけ変えるような微妙な変更は、ほとんどあり得ません。その場合でも、結果が疑わしいと思われる場合は、エラーがログに記録されます。完全な外れ値である場合でも、そのデータポイントを破棄できます。 要約すると、はい、私自身は少なくとも部分的には正気であると考えています。また、プログラムを実行したままにするグローバル例外処理ルーチンは必ずしも完全に悪であるとは考えていません。前に2回言ったように、アプリケーションによっては、このような決定が有効な場合があります。この場合、それは有効な決定であると判断され、合計ではなく、でたらめです。他のアプリケーションでは、決定が異なる場合があります。しかし、私たちまたはエラーを無視しているという理由だけで、世界を爆破する可能性があるそのプロジェクトに取り組んだ他の人々を非難しないでください。 補足:そのアプリケーションのユーザーは1人だけです。WindowsやOfficeのように何百万人もが使用しているものではなく、例外をユーザーにバブルさせるコストは、そもそも非常に異なっています。

20
WPFツリービューのSelectedItemへのデータバインディング
WPFツリービューで選択されているアイテムを取得するにはどうすればよいですか?バインドしたいので、これをXAMLで行いたいと思います。 存在するとは思われるかもしれませんがSelectedItem、明らかに存在しないのは読み取り専用であるため、使用できません。 これは私がしたいことです: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource ClusterTemplate}" SelectedItem="{Binding Path=Model.SelectedCluster}" /> をSelectedItemモデルのプロパティにバインドします。 しかし、これは私にエラーを与えます: 'SelectedItem'プロパティは読み取り専用であり、マークアップから設定することはできません。 編集: OK、これは私がこれを解決した方法です: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource HoofdCLusterTemplate}" SelectedItemChanged="TreeView_OnSelectedItemChanged" /> そして私のxamlのcodebehindfileで: private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { Model.SelectedCluster = (Cluster)e.NewValue; }
240 c#  wpf  mvvm  treeview  selecteditem 

3
WPFのページとウィンドウ?
ソリューションエクスプローラーで新しいファイルを追加するときのWPFのページとウィンドウの違いは何ですか?
237 c#  wpf 

4
ObservableCollectionとBindingListの違い
私は間の違いを知ってほしいObservableCollectionとBindingList私はソースのいずれかの追加/削除の変更を通知するために両方を使用しましたので、他の上で1つを好むとき、私は実際にはわかりません。 次のいずれかを選択するのはなぜですか? ObservableCollection<Employee> lstEmp = new ObservableCollection<Employee>(); または BindingList<Employee> lstEmp = new BindingList<Employee>();

23
MVVMを使用したWPFでのダイアログの処理
WPFのMVVMパターンでは、ダイアログの処理はより複雑な操作の1つです。ビューモデルはビューについて何も知らないので、ダイアログ通信は興味深いものになる可能性があります。ICommandビューを呼び出すとダイアログが表示されることを公開できます。 誰かがダイアログからの結果を処理するための良い方法を知っていますか?私はのようなウィンドウダイアログについて話しているMessageBox。 これを行う方法の1つは、ダイアログが必要なときにビューがサブスクライブするビューモデルのイベントを使用することでした。 public event EventHandler<MyDeleteArgs> RequiresDeleteDialog; これは問題ありませんが、ビューにはコードを必要とすることを意味します。

13
MVVMのどのフレームワークを使用すればよいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 MVVMモデルでアプリケーションを開発していますが、使用するフレームワークを選択する必要があるところまで到達しました。 可能なオプションには次のものがあります。 MVVMツールキット MVVM Foundation WPFアプリケーションフレームワーク(WAF) ライトMVVM カリバーン シンチ プリズム ReactiveUI あなたの経験では、どちらが良いですか?
233 wpf  mvvm  frameworks 

30
WPF TextBoxでフォーカスのあるすべてのテキストを自動的に選択する方法は?
イベントハンドラーSelectAllから呼び出した場合GotFocus、マウスでは機能しません-マウスを離すとすぐに選択が消えます。 編集:人々はドネルの答えが好きです、私はなぜそれが受け入れられた答えほど好きではなかったのかを説明しようとします。 それはより複雑ですが、受け入れられた答えは同じことをより簡単な方法で行います。 受け入れられた回答の使いやすさは優れています。テキストの中央をクリックすると、マウスを離すとテキストの選択が解除され、すぐに編集を開始できます。それでもすべてを選択したい場合は、もう一度ボタンを押すだけで、リリース時に選択が解除されません。ドネルのレシピに従って、テキストの真ん中をクリックした場合、編集するにはもう一度クリックする必要があります。テキスト内外のどこかをクリックした場合、おそらくすべてを上書きするのではなく、編集を開始したいということです。
232 .net  wpf  silverlight  textbox 

5
WPFの単純な(私は思う)水平線?
比較的単純なデータ入力フォームを作成し、特定のセクションを(HTMLのHRタグとは異なり)フォームの全長に渡る水平線で区切るだけです。 私はこれを試しました: <Line Stretch="Fill" Stroke="Black" X2="1"/> 親コントロールは固定幅ではないため、この線によりウィンドウが画面の全幅に拡大されます。 親のコントロール/ウィンドウの幅を固定せずにこれを行う簡単な方法はありますか?
228 wpf  xaml  wpf-controls 



15
WPFテキストブロックを選択可能にする方法はありますか?
オープンソースのTwitterクライアントであるWittyに表示されるテキストを選択可能にしたい。現在、カスタムテキストブロックを使用して表示されています。@usernameとリンクをハイパーリンクとして表示およびフォーマットするためにテキストブロックのインラインを操作しているため、TextBlockを使用する必要があります。頻繁に要求されるのは、テキストをコピーして貼り付けることができるようにすることです。そのためには、TextBlockを選択可能にする必要があります。 テキストブロックのようにスタイル設定された読み取り専用のTextBoxを使用してテキストを表示することでテキストを表示しようとしましたが、TextBoxにインラインがないため、私の場合は機能しません。つまり、TextBlockの場合のように、TextBox内のテキストを個別にスタイル設定またはフォーマットすることはできません。 何か案は?
224 wpf  xaml  textbox  textblock 

4
ウィンドウの高さ=「自動」が期待どおりに機能しない
私がやろうとしていることは、明示的に高さ/幅を持たないウィンドウを表示することです(両方の値が省略されているか、に設定されていますAuto)。ウィンドウがそのサイズを自動で見つけると思っていました-含まれているすべてのユーザーコントロールのサイズを計算しますが、これは実際には機能しません! 代わりにActualwidth、Actualheight値が512に設定された大きなウィンドウが表示されます(?!?!) ウィンドウ宣言: <Window x:Class="Window3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window3" Height="Auto"> <StackPanel> <Label>Window</Label> </StackPanel> </Window> このウィンドウをダイアログとして表示: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click Dim dlg As New Window3 dlg.ShowDialog() End Sub これに対する解決策はありますか?フォーム内の多くのコントロールはコンストラクターのパラメーターに基づいて折りたたまれ、フォームの実際のサイズを見つけるのは難しい(そして醜い)ため、ウィンドウのサイズを明示的に設定したくありません。
223 wpf 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.