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/ >>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の戻り値を見てボタンの実行の可否を判断してる 当然ながら状態変わったと通知しないと変更されても気づかない というか普通にググって順番に見て言って ” 勉強 ”してからわからないことを聞いたほうがいいよ 入門者の数だけみんなレスしないといけない ここはそんな場所じゃない WPFの難しさの理由 ・柔軟なレイアウトが可能だがそのルールが理解しづらい ・MVVMを生かすための仕組みが複雑 ・デバッグしづらい そうは言っても WPF一度でもやると Formには戻れなくなる不思議 winformsに戻れないことはないよ 使い道次第で使い分ければいい WPFはrichtextboxが絶望的にダメだから winforms使う textboxを二〜三個はって数値入れてボタン押して実行 ログを延々出す用途だとWPFは使いたくない レイアウトはそんなに難しくないね やっぱり保守性(可読性)の悪さと、パフォーマンス的にGDIの置き換えが 不可能な分野があるのは痛いね 一時期勉強してたけどこれで一気に萎えた こんなの絶対に普及しないと確信したし ゲームエンジンでギョーミーなアプリ作ってる人いますか? 保守性って言うけどhtmlと大して変わらんと思うけどな >>796 ギョーミーアプリのUIがセンスなしの塊だからそれで良いのだ。 ギョーミーって最初に見たときは英語だと思ったわw 一般論としては訳分からんジャーゴン使いたがる人は群れたい人だね ジャーゴンの機能ってそれを使うことで同じ村の村人の一員であると感じさせることだから それがいいか悪いかしらんけど、俺個人は気色悪いし嫌いだねこういうの そういえばWPFって3D機能あるけど使ってる奴いるのかな 業務でやらされたら悪夢だね 3D使うならブラウザ上のほうがパフォーマンス高いよ 開発の情報も多いし WPFの3Dはおまけ機能だから >>799 ジャーゴンというジャーゴンを使って気色悪いし嫌いと宣言するセンスワロタ ジャーゴンって言うか 死んでる? じゃあ、他の生きてるの全部殺して再起動しろ なんて会話が飛び交う業界だしw >>804 殺すっていう言葉は他の工学でも昔から割と使うよ 俺は元は電気系だけど無効化するって意味で「そのTrを殺して...」とか普通に言う たぶん機械系でも使うはず XAMLをexeの外に出しといて 実行時にLoadするやり方って一般的? >>809 その要件次第のところを聞きたい どういう要件のときに XAMLを外に出すのか >>822 画面をリコンパイルなしで変えたいときじゃない? ユーザーにカスタマイズさせるとか。 xamlを動的に生成、もしくは読み込ませるのはFlowDocumentを作りたいとき 具体的には印刷プレビュー 今さら気付いたんだが、デバッグ起動でウインドウを表示したままxamlを編集すると リビルドなしにそのままデザインが反映されるのな デュアルモニターなら作業はかどる xamlで余白の多い文字(例えばm)などの余白部分を切り取って 矩形で切り出したいんだがやり方分かりませんか? ymW 確かに上にも下にも余白がある。 ペゾルトの本に書いてあった気がするけど何か名前もついてるんだよねこれ こういうのWPFの守備範囲と違うような気がしないでもない。知らんけど WPF フォントで検索しようとしたら 「ふ」を入力したところで「普及しない」ってサジェストされたぜ 悲しいね さすがにもう10年以上経ってるんだから「普及しなかった」でいいだろ そろそろ楽にしてやろうぜ ストアに出すソフトのロゴをwpfで書いたんだが、結局merginをマイナスにしたりViewBox使ったり 力技でなんとかやっつけましたわ 画像処理あまり知らないんでこういう時ホント困ります WPFレイアウトの問題はともかく グラフィック扱うならそれ用のソフト使えばいいのに もともとストアアプリを作りたい人以外には制約が多いだけの仕組みだしな。 けっこう強引に誘導してたのに、Windows Mobileが無くなるなら梯子外されたようなもんだ。 UWPはプロセス間通信できないとかファイル操作に制限がありまくりとか致命的すぎる。 DBMSプロセスと通信が出来ないんじゃギョーミーアプリが作れん PCでアプリ作るならこれで作れ、というものを作らないとな。 WPFの分かりやすいやつというかUWPの制限緩いやつというか。 今のMicrosoftはまったくビジョンがない。 WPFがわかりにくい、面倒くさいって印象は、標準のフレームワークの機能不足もあるように思う。 TreeViewで選択されたTreeItemを取得するのに、単純にBindingできりゃよかったんだが それができないんで面倒くさい添付プロパティ書く羽目になるとか。 MSにしてみれば「拡張する手は用意したから基本機能は多少不足しててもいいだろ」ってことかもしれんが。 >>829 ビジョンはあるでしょ ・業務アプリはWebへ完全移行 ・ネイティブアプリはコンシューマ向けのWebサービスのクライアントだけが残るので、それに特化したシンプルなプラットフォーム(UWP)があればよい >>832 あなたのビジョンでしょw Microsoftは何も言っていない。 Webで全部というのは無理がある エクセルオンラインもオンライン会計もオンライン顧客管理も嫌がる できるのはせいぜいメール仕訳とグループウェアで会議室予約 それに付随する週間売り上げレポート自動作成くらい これらは集約された鯖に常時接続が効率いい そのサーバーもCSVで出力してくれ、アトハエクセルデヤル、が常套句だったりする ビジョンつっても基本的にアレなんだけど、MFCからしてアレな出来だったし WinFormsはDelphiからの輸入だし、なんつーか >>792 まじかよ 2段DGVとかサドパ買う金ないから勉強してるけど リッチテキスト絶望なんか、、 TextBlockで事足りるから使うまでも無いかな RichTextBox 上の選択範囲に、TextSelection.ApplyPropertyValue() で FontStyle を適用した時の現象について https://blogs.msdn.microsoft.com/japan_platform_sdkwindows_sdk_support_team_blog/2017/12/01/wpf_richtextbox_textselection_applypropertyvalue_fontstyle/ WPF の RichTextBox コントロール上の現在の選択範囲に対し、TextSelection.ApplyPropertyValue() で FontStyle を適用して修飾した場合について、二つの現象をご案内します。 ・現象 1. RichTextBox.Selection プロパティに FontStyles.Italic スタイルを適用しても、RichTextBox 上では Italic スタイルで描画されません。 ・現象 2. RichTextBox 内の文字列の最後尾にカーソルが存在する状態で、RichTextBox.Selection プロパティに FontStyles.Bold スタイルを適用した後、そのまま続けて全角文字を追記すると、追記した全角文字に Bold スタイルが適用されず、Bold スタイルで描画もされません。 対処方法 WPF の RichTextBox の代わりに、WinForm の RichTextBox や、Win32 の RichText または MFC の CRichEditCtrl のご利用をご検討ください。 >>840 現象1はWindows 10なら問題ない。 下記のhogehoge〜の部分に TextTrimming="CharacterEllipsis" の効果を適用したいのですが、可能なのでしょうか?宜しくお願い致します。 <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" MinWidth="100" MaxWidth="200"/> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TreeView Grid.Column="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <TreeViewItem IsExpanded="True"> <TreeViewItem.Header> <TextBlock Text="hogehogehogehoge" Margin="5,0" /> </TreeViewItem.Header> <TreeViewItem> <TreeViewItem.Header> <TextBlock Text="hogehogehogehoge" VerticalAlignment="Center" TextTrimming="CharacterEllipsis" /> </TreeViewItem.Header> </TreeViewItem> </TreeViewItem> </TreeView> <GridSplitter Grid.Column="1" Width="1" VerticalAlignment="Stretch" HorizontalAlignment="Center" Background="DarkGray" /> <Label Grid.Column="2" Background="LightGreen">R</Label> </Grid> >>843 ありがとうございます! 結局一からテンプレートで作れということですね。 DataGridのセルで文字列を自動的に折り返しさせるにはどうすればいいですか? どうでもいいけど自己解決したときはその方法を書いておいてくれると同じ疑問を持った他の誰かが見たときに役立つよ WPF会社で使おうとしたけど情報少ないわ複雑だわで断念した WinFormがやはりシンプルで良いな 特にビットマップの扱いがWPFは不便すぎ >>848 確かにシンプルなAPIじゃないね。 でも、画像を出力することが目的じゃない限りは使うことないから、あんまり気にしたことなかった。 ListBoxの行のマウスオーバーおよび選択時において、 背景の色を赤に変更したいのですが、どのようにしたら良いでしょうか? 下記のコードだと、フォントのサイズは変更されるのですが、 背景はデフォルトのままです。 以上よろしくお願いいたします。 <Grid Margin="5"> <ListBox> <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="Red" /> <Setter Property="FontSize" Value="15" /> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Red" /> <Setter Property="FontSize" Value="15" /> </Trigger> </Style.Triggers> </Style> </ListBox.ItemContainerStyle> <ListBoxItem Content="item1" /> <ListBoxItem Content="item2" /> <ListBoxItem Content="item3" /> </ListBox> </Grid> ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる