WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part21 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Windows Presentation Frameworkについて語るスレ。 前スレ WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part20 http://echo.2ch.net/test/read.cgi/tech/1458082648/ 関連スレ Windows 10 UWPアプリ開発 http://echo.2ch.net/test/read.cgi/tech/1440150886/ コードを貼る場合は以下のサイトの利用をお勧め。 run codeのチェックは外しておきましょう。 http://ideone.com/ >GUIだとその最低限のものを作るのにも書かなきゃいけないことが多くて初心者向きじゃない という程にはWinFormは難解じゃないわな。その辺りは良くも悪くもVisual Basic譲り ただ、GUIから入るとFormの存在感が強すぎて、ブラックボックス的な部分もあって、クラス などの基礎知識の理解を遅らせかねない部分があるのは確か とはいえ、今のご時勢CUIでストイックにプログラミング勉強しようとも人に勧めようとも 思わないけどな ボール無しでの基礎訓練も大事だけど、やっぱシュート練習のほうが楽しいわさ >>688 >ボタンのラベルを他から参照する事が無い、次の画面に持ち越さずその場限りの使い捨てで良いならコードビハインド そう。悩まないんだ!すごいねー。それで可搬性のあるコードになるんだー(棒 みんなそうなるといいねー。すてきー(呆 低能なら低能でコードビハインド使うのは別に悪ではない。 けっきょく低能よばわりされるんだ、悪じゃないのに。へー(もはや何もなし かずきは大したことないよ。ただブログこまめに発信してるだけ。 neueccみたいな何か作り出せるのが最強 >>693 まともなドキュメント書かなきゃ誰も使ってくれないけどね。 Rubyが流行ったのは早い段階で英語のドキュメントがあったから。 オレ、ドキュメントなんて面倒くさくて書きたくないけどw WPF使えるようになれば分かると思うが、理解できないのはWPFが糞設計だから。 決してPGのスキルの問題ではない。もしPGのスキルのせいにしてる奴がいるとすれば、 そいつはWPFを理解していないだけ。 コードビハインドとか新しい用語作っておきつつ学習した後で それは柔軟性が足りないとか言われても困る >>696 どんな糞でも食せるように調理できるのはスキルではないと言うのか。 オレはスカトロマニアかw ウメーとこだけバインド利用しましょうでええんや キッチリカッチリ無理無理。ハゲるぞ WPFが糞というのはないな、xamlが糞だというのはおおむねそうだな xmlもどきで記述されたものを専用パーサで読みUIを作るという着想はいいんだ 問題は書式、カッコ増えすぎインデント深すぎ、可読性が悪いし記述がしにくい フラットだったら可読性が良いってわけでもないと思うがな。 少なくとも、デザイナー使わないと読んでも理解できない.Designer.csよりはマシになったと思う。 xamlでネストが深くなりすぎたと思ったら<UserControl>でモジュール分割するタイミングだな。 main()関数の中に全部の処理を記述するようなことしてるから糞に思えるんだよ。 xmlの問題なのは重々承知だが、コメントの書き方何とかならんものだろうか >>700 xmlモドキじゃなくxmlだろ。 独自構文だともう少しスッキリはするかも。 なんとかバインドの雰囲気がわかったと思ったらコマンドってなんだよ これ1番わからねぇわ WPFの本質が見えているとなぜ普及しなかいなんて一目瞭然なんだが、 それをPGのスキルのせいにするのは基本的にWPFの本質、使い方が何も分かってないのだろう。 WPF以外でスタイリッシュなUIって作れるのありますか? WinFormじゃメチャクチャ工数がかかるのでWPF以外で何かいいのあったら教えて頂きたいです。 wpf難しい… データバインドがうまくいかない データベースから取ってきたリスト型のデータをコンボボックスのitemsourceに設定するだけなのにうまくいかぬ >>705 >それをPGのスキルのせいにするのは PGのスキルのせいだと思うぞ。 MSが日本の平均的スキル(日本のITは奴隷産業なので世界の底辺以下のそのまた以下の以下のゴミクズ以下)を超えた物を作ってしまったのでついて行けてないだけ。 WPF開発は個別の画面の前に全体の仕組みの設計から入らないと上手くいかないというかクソ手間かかるんだよな 日本人はそういうの苦手でボトムアップが好きだから根本的に合わないんだよ まぁ確かに、Formsだとポトペタで画面作ってダブルクリックで開いたイベントハンドラに ちょいちょいとコードを書けばそれで動くものができたからな。そのお手軽さは素晴らしい。 htmlの手書きが出来るならxamlなんて言うほど大変じゃないんだけどな swingのレイアウトよりは遥かにマシだと思うし TriggerとCommandは触らねーって誓っておけばまあまあ うっかり<i:Interaction.Triggers>書いちまった、もう戻ってこれないかもしれない、すまぬ すっかり忘れてたが、CommandってprismとかReactiveCommand使わんと無茶苦茶面倒だったな prism使えば大したものじゃねーよ >>709 リストはListではなく、ObservableCollection使ってるか? リストはプロパティになってるか? フィールドだとバインドされないぞ リストのインスタンスをバインドした後に書き替えてないか? コマンドは許すがビヘイビアは最悪 あの頃の「コードビハインドは殺せ」な宗教化したMVVMのせいでWPFが避けられるようになったんだと思うわ uwpからイベントをバインド出来るようになったから、ビヘイビアは殆ど書かなくても何とか成るようになった >>720 ビヘイビアやトリガーは1度作ってしまえば、既存のコントロールにポトペタで機能を追加出来て面白いけど、 使いまわししないならいちいち作るのは面倒なだけだね。 ビヘイビアって依存関係プロバティーが仰々しいだけで、中身は大したことやってないから難しいものでもないんだけどね 警戒せずにコード読めば簡単に理解できるから ビヘイビアの問題はビューとロジックの分離を壊すこと Libet信者なんか当時はXAMLでプログラミングしてドヤ顔してるような状態で本当に酷かった >ビヘイビアの問題はビューとロジックの分離を壊すこと ビューにロジックが存在しちゃいかんって法はないだろ。 ビジネスロジックを置くべきじゃないって話と混同してるんじゃないか? ビューとロジックの分離というのは文脈によって様々なものを指すが、 WPFの根幹の思想としてのビューとロジックの分離は、「見た目はXAMLで定義し、振る舞いはコードで定義する」ってことだ。 それを破ってXAMLで振る舞いを定義しようとしたのがビヘイビア。 強力すぎる設定ファイルを与えると人は次第にそれで複雑なプログラミングをするようになるもので、 設定ファイルとして分けた意味がなくなってしまうんだよ。 ダイアログ出すくらいいいだろと思う人もいるかも知れないが、それを認め始めると歯止めが効かなくなるの。 >WPFの根幹の思想としてのビューとロジックの分離は、「見た目はXAMLで定義し、振る舞いはコードで定義する」ってことだ。 XAMLのみがビューだと言っているのか? ビヘイビアのコードはビューじゃないとしたら何だと? Viewの「動作」を書くのは有だと思うが 何事も程々にですな >>730 ビューとロジックというのは相対的なもので、具体的に何を指すかは場合によって違う WPFはもともと、デザイナーがデザインを作ってプログラマがコードビハインドを書くことで分業するように設計されている プログラマ目線のビューとロジックの分離はもう一段上がるわけだが、それはWPFとは直接関係のない話だ >>729 そうは思うわないな。 ビヘイビアが糞なのはそうだが。 ビューとモデルの分離 プレゼンテーション(ビュー)ロジックとビジネスロジックの分離 デザインとロジックの分離 このあたりの勘違いだろうと突っ込んでみたら、説明がどんどん意味不明になって笑える WPF = MVVM だと思ってると敷居が高いがWinFormに代わる綺麗な UIの作れるライブラリだと思って使えば敷居がかなり下がる。 コードビハインドとバインドしてイベントベタ書きでも何も問題無いんだよ。 MVVMなんて高尚なものは後でも良いのだ。 >>732 ええええ コードビハインドはViewでデザイナーが書くもんだと思ってたわ xamlを書けるホンモノのデザイナーなんて日本に存在するの? >>738 xamlにMVVM, Entity Framework, prismのようなライブラリ 初心者がフルコースで全部やろうとすると玉砕するのは当たり前。 先ずは、xamlとbindingだけ理解できれば十分だと思う。 ビヘイビア使わないでフルードアニメーション書くならどこに書くんだ? Vしかないだろ ビヘイビア自体は適切だろ だから、ビューが最小限のコンソールアプリを書いて、それにビューをつけるようにしておけば、モデルロジックとビューロジックの境目がわからみえるようになってくるよ xamlをWinFormに置き換えても、そのまんま動くのがModelだけど。 だったら、このスレと関係ないがな〜になる。 ViewModelとModelをdllにしても問題なくビルド&実行できるなら それはちゃんと責務の分離が出来ている UI変更したらViewModelは影響受けるけどModelは一切影響受けない(ようにつくる)だけだろ アプリを作れて動いて、それで誰も困ることがなければどうやって作っててもいいと思う。 メンテしないような使い捨てアプリにMVVMで作るコストかけても仕方ないし、メンテナンスや機能拡張するアプリを、ちゃんと設計せずに作るのはヤバイ。 適材適所 馬鹿は一つしか覚えられないから金のハンマーを欲しがる prismを見ると、MVVM以外にDIコンテナだったりナビゲーションサービスだったり画面遷移型のフレームワークってのももう一つの柱なのがわかる WpfのゴールとしてMVVMだけじゃなくて、従来のWindowを次々開くタイプのアプリからWebのような一つのWindowで画面が遷移するタイプへの移行ってのも在るのかもしれんね 実際Windowをやたらと開かないタイプの方が遥かに使いやすい >>748 馬鹿でも沢山覚えられるぞ。 但し、カンナで釘を打ちハンマーで釘を抜くなんて使い方をするだけさ。 >>749 いや業務アプリってメインフレームの時代から画面遷移型が基本だぞ だからWebでいいんじゃねとなる 仕事したことないならPrismの画面遷移型アプリみたいなのは新鮮に感じるのかな >>719 ありがとう、今日試してみたらうまくバインドできたよ 自己流であまり綺麗じゃないかもしれないが ただ、今度は画面のレイアウトがうまくいかない… canvas使ってペタペタやれば出来るのかもしれないが、せっかくだからもっとうまくいくやり方でやってみる >>748 バカじゃないけどたくさん覚えるのは面倒だから金のハンマーが欲しいわ >>751 そもそもメインフレーム時代はマルチウィンドとかなかったりしたしな >>754 テキストベースのポップアップウインドウもどきは有ったぞ >>748 暗記は馬鹿文系の得意技。おまえもそっち系だな。 ちょまど神への信仰が足りないから争いが起きるのです ちょまど神は、可愛くて漫画がプロ並みでプログラミングも出来るがオタクだな。 中川しよう子と同じ香りがする >>764 いつも思うけど、公人でもプライバシー売ってる芸能人でもない一般人に粘着する奴って ストーカーと同じ。気色悪いわ。他人の前に自分自身をよく見てみろ。 自分で自分をおかしいと思わないなら、あんた人間として壊れてるよマジで。 言っても無駄だと思うけど。 >>765 なんでオレに言う。 別嬪さんは全部好きだが彼女に特別興味があるわけではない。 >>759 > 暗記は馬鹿文系の得意技。おまえもそっち系だな。 プログラミングで暗記とか言う奴の方が馬鹿文系っぽいが w 馬鹿にしていた文系に負けたとか、 嫌な思い出でもあるのでしょう 触れなさんな xamarinで調べごとするとチンポ騎士団が嫌でも目にはいるのが厄介 覚えらないからWPF使えないと思っている馬鹿がいるようだが、 単にWPFは使い物にならないから使われてない。WPFを理解すれば分かること。 ゴミすぎてもう消えることは決定している。 問題ないとは言わんが、回避できない問題山積ってわけでもないだろ どうせ口だけで具体的に何も指摘できないんだろうねw 標準でVからVMのメソッドに直接バインドできたらいいのに データバインドがようやく分かってきた これがあると飛躍的に出来ることが拡がるな 下記コードは選択中にツールチップが表示されますが、 選択された後にコンボボックス上でツールチップを表示させることは可能でしょうか? 以上よろしくお願いいたします。 <Grid> <StackPanel> <ComboBox Width="100"> <ComboBoxItem ToolTip="This it tool tip for item 1">This it tool tip for item 1</ComboBoxItem> <ComboBoxItem ToolTip="This it tool tip for item 2">This it tool tip for item 2</ComboBoxItem> </ComboBox> </StackPanel> </Grid> >>776 <Grid> <StackPanel> <ComboBox x:Name="ComboBox1" Width="100" ToolTip="{Binding SelectedItem.ToolTip, ElementName=ComboBox1}"> <ComboBoxItem Content="This it tool tip for item 1" ToolTip="This it tool tip for item 1" /> <ComboBoxItem Content="This it tool tip for item 2" ToolTip="This it tool tip for item 2" /> </ComboBox> </StackPanel> </Grid> >>777 ありがとうございます!意外とシンプルでした。。。 >>751 当然GUIではないが、SASは実現してたね。 しかもWin3.1が出てきた時代には、 メインフレームのマルチウインドウプログラム<=>Win3.1のGUIで 互換性を保っていた。 他のソフトでは見たことないけど。 MVVMの勉強を行なっているのですがコマンドってどう扱えば良いでしょうか 元々プログラミング自体勉強し始めたばかりなので初歩的な部分で理解できていない部分もあるとは思いますがサンプルを見てもどれも違った作り方をしてて動きも全くイメージが掴めません… あるボタンを command ={Binding testbutton} とした場合、ボタンを押した状態はtrueやfalseも入っておらずどのように処理を記述すれば良いのか分かりません… 例えばボタンを押したらメッセージボックスを出すだけの単純な物を作ろうとした時に コマンドを使わずクリックイベントで処理するなら -viewmodel- private void button(object sender , RoutedEventArgs e) { model.test(); } -model- public void test() { MessageBox.Show(Test); } これをコマンドに置き換えるとどういう形になるのでしょうか? 答えにくい質問で申し訳ありませんがよろしくお願い致します >>780 とりあえずRelayCommandでGoogle先生にお伺いを立ててみよう 一番かんたんなのはICommadを実装したクラスを用意する だがコマンド毎にクラスとか毎回手間すぎて禿げるので DelegateCommandやRelayCommandを作るか作ってあるものを利用する これはMVVMフレームワークごとに呼び方が違うだけでやりたいことは一緒 https://ideone.com/D0rrm7 コマンドを使うとコードをVに書かないで済む ただ… イベントと比べると コマンドは送れる情報量が少ない コントロールに目的の動作に対応したCommandプロパティがあるとは限らない VMがとっちらかる可能性がある いまさらWPF勉強はじめたけど凡人には敷居たかいわ;; いや年とったせいかな、いつもどおりデバッグしてF5、デバッグしてF5とえんえんとやって覚えていくんだが おれ何十年おなじことやっとんねん、と考えると何とも以遠気分になる でもたのちい >>782 わざわざ作って頂いて本当にありがとうございます 質問なのですが class ViewModel { FooModel fooModel = new FooModel(); public ICommand testbutton { get; set; } public ViewModel() { testbutton = new TestButtonCommand { model = fooModel }; } } 以下の行はどういう意味なのでしょうか? testbutton = new TestButtonCommand { model = fooModel }; また class TestButtonCommand : ICommand { public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter) => true; // ←ここをfalseにするとボタン押せないのを確認する public void Execute(object parameter) { model.test(); } ボタンを押した際に特に何も指定していない以下の部分がボタンの状態を確認しているのでしょうか? 自分の頭が悪過ぎるのもありますがやっぱり難しいです… public bool CanExecute(object parameter) => true >>786 ボタンはコマンドのCanExecuteの戻り値を見てボタンの実行の可否を判断してる 当然ながら状態変わったと通知しないと変更されても気づかない というか普通にググって順番に見て言って ” 勉強 ”してからわからないことを聞いたほうがいいよ 入門者の数だけみんなレスしないといけない ここはそんな場所じゃない ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる