X



WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part21 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/05/09(火) 09:09:13.94ID:KhhA22kJ
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/
0750デフォルトの名無しさん
垢版 |
2017/11/13(月) 23:45:47.26ID:1k/7dsAB
>>748
馬鹿でも沢山覚えられるぞ。
但し、カンナで釘を打ちハンマーで釘を抜くなんて使い方をするだけさ。
0751デフォルトの名無しさん
垢版 |
2017/11/14(火) 00:38:06.83ID:04qZtOw+
>>749
いや業務アプリってメインフレームの時代から画面遷移型が基本だぞ
だからWebでいいんじゃねとなる
仕事したことないならPrismの画面遷移型アプリみたいなのは新鮮に感じるのかな
0752デフォルトの名無しさん
垢版 |
2017/11/14(火) 02:03:30.52ID:sCopJL4R
>>719
ありがとう、今日試してみたらうまくバインドできたよ
自己流であまり綺麗じゃないかもしれないが
ただ、今度は画面のレイアウトがうまくいかない…
canvas使ってペタペタやれば出来るのかもしれないが、せっかくだからもっとうまくいくやり方でやってみる
0764デフォルトの名無しさん
垢版 |
2017/11/14(火) 19:44:59.16ID:sSxxq2Sz
ちょまど神は、可愛くて漫画がプロ並みでプログラミングも出来るがオタクだな。
中川しよう子と同じ香りがする
0765デフォルトの名無しさん
垢版 |
2017/11/14(火) 20:53:34.28ID:31nONYO+
>>764
いつも思うけど、公人でもプライバシー売ってる芸能人でもない一般人に粘着する奴って
ストーカーと同じ。気色悪いわ。他人の前に自分自身をよく見てみろ。

自分で自分をおかしいと思わないなら、あんた人間として壊れてるよマジで。
言っても無駄だと思うけど。
0767デフォルトの名無しさん
垢版 |
2017/11/14(火) 21:47:48.12ID:Dc+h7CRO
>>759
> 暗記は馬鹿文系の得意技。おまえもそっち系だな。
プログラミングで暗記とか言う奴の方が馬鹿文系っぽいが w
0768デフォルトの名無しさん
垢版 |
2017/11/14(火) 22:09:21.65ID:FOR7JOrW
馬鹿にしていた文系に負けたとか、
嫌な思い出でもあるのでしょう
触れなさんな
0769デフォルトの名無しさん
垢版 |
2017/11/15(水) 03:49:16.30ID:PBDUFr1U
xamarinで調べごとするとチンポ騎士団が嫌でも目にはいるのが厄介
0771デフォルトの名無しさん
垢版 |
2017/11/15(水) 13:12:12.68ID:qga1lTtf
覚えらないからWPF使えないと思っている馬鹿がいるようだが、
単にWPFは使い物にならないから使われてない。WPFを理解すれば分かること。

ゴミすぎてもう消えることは決定している。
0772デフォルトの名無しさん
垢版 |
2017/11/15(水) 13:32:09.19ID:nmEsB5Z0
問題ないとは言わんが、回避できない問題山積ってわけでもないだろ
どうせ口だけで具体的に何も指摘できないんだろうねw
0774デフォルトの名無しさん
垢版 |
2017/11/15(水) 21:07:44.79ID:wdJ6Ok7d
データバインドがようやく分かってきた
これがあると飛躍的に出来ることが拡がるな
0776デフォルトの名無しさん
垢版 |
2017/11/16(木) 17:08:22.10ID:PzwxtFUT
下記コードは選択中にツールチップが表示されますが、
選択された後にコンボボックス上でツールチップを表示させることは可能でしょうか?
以上よろしくお願いいたします。


<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>
0777デフォルトの名無しさん
垢版 |
2017/11/16(木) 18:20:42.66ID:x/aWQ3sN
>>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>
0778デフォルトの名無しさん
垢版 |
2017/11/16(木) 18:59:08.25ID:PzwxtFUT
>>777

ありがとうございます!意外とシンプルでした。。。
0779デフォルトの名無しさん
垢版 |
2017/11/19(日) 23:30:40.15ID:DGB0My1S
>>751
当然GUIではないが、SASは実現してたね。
しかもWin3.1が出てきた時代には、
メインフレームのマルチウインドウプログラム<=>Win3.1のGUIで
互換性を保っていた。
他のソフトでは見たことないけど。
0780デフォルトの名無しさん
垢版 |
2017/11/20(月) 18:20:06.51ID:xUHYIzKM
MVVMの勉強を行なっているのですがコマンドってどう扱えば良いでしょうか
元々プログラミング自体勉強し始めたばかりなので初歩的な部分で理解できていない部分もあるとは思いますがサンプルを見てもどれも違った作り方をしてて動きも全くイメージが掴めません…
あるボタンを
command ={Binding testbutton}
とした場合、ボタンを押した状態はtrueやfalseも入っておらずどのように処理を記述すれば良いのか分かりません…

例えばボタンを押したらメッセージボックスを出すだけの単純な物を作ろうとした時に
コマンドを使わずクリックイベントで処理するなら

-viewmodel-
private void button(object sender , RoutedEventArgs e)
{
model.test();
}

-model-
public void test()
{
MessageBox.Show(Test);
}


これをコマンドに置き換えるとどういう形になるのでしょうか?
答えにくい質問で申し訳ありませんがよろしくお願い致します
0782デフォルトの名無しさん
垢版 |
2017/11/20(月) 20:19:45.47ID:Q9UPjx7d
一番かんたんなのはICommadを実装したクラスを用意する
だがコマンド毎にクラスとか毎回手間すぎて禿げるので
DelegateCommandやRelayCommandを作るか作ってあるものを利用する
これはMVVMフレームワークごとに呼び方が違うだけでやりたいことは一緒
https://ideone.com/D0rrm7
0783デフォルトの名無しさん
垢版 |
2017/11/20(月) 20:55:31.92ID:f1XDtXet
コマンドを使うとコードをVに書かないで済む

ただ…
イベントと比べると
コマンドは送れる情報量が少ない
コントロールに目的の動作に対応したCommandプロパティがあるとは限らない
VMがとっちらかる可能性がある
0784デフォルトの名無しさん
垢版 |
2017/11/20(月) 21:54:47.51ID:uTaWa3cA
いまさらWPF勉強はじめたけど凡人には敷居たかいわ;;
いや年とったせいかな、いつもどおりデバッグしてF5、デバッグしてF5とえんえんとやって覚えていくんだが
おれ何十年おなじことやっとんねん、と考えると何とも以遠気分になる

でもたのちい
0786デフォルトの名無しさん
垢版 |
2017/11/20(月) 23:01:16.33ID:xUHYIzKM
>>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
0787デフォルトの名無しさん
垢版 |
2017/11/21(火) 00:15:42.31ID:D1w1iQjW
>>786
ボタンはコマンドのCanExecuteの戻り値を見てボタンの実行の可否を判断してる
当然ながら状態変わったと通知しないと変更されても気づかない

というか普通にググって順番に見て言って ” 勉強 ”してからわからないことを聞いたほうがいいよ


入門者の数だけみんなレスしないといけない
ここはそんな場所じゃない
0789デフォルトの名無しさん
垢版 |
2017/11/21(火) 00:23:39.47ID:D1w1iQjW
WPFの難しさの理由

・柔軟なレイアウトが可能だがそのルールが理解しづらい
・MVVMを生かすための仕組みが複雑
・デバッグしづらい
0792デフォルトの名無しさん
垢版 |
2017/11/21(火) 00:36:01.62ID:D1w1iQjW
winformsに戻れないことはないよ
使い道次第で使い分ければいい

WPFはrichtextboxが絶望的にダメだから
winforms使う
0793デフォルトの名無しさん
垢版 |
2017/11/21(火) 00:38:18.37ID:D1w1iQjW
textboxを二〜三個はって数値入れてボタン押して実行
ログを延々出す用途だとWPFは使いたくない
0794デフォルトの名無しさん
垢版 |
2017/11/21(火) 02:24:00.52ID:6rwGwV6M
レイアウトはそんなに難しくないね

やっぱり保守性(可読性)の悪さと、パフォーマンス的にGDIの置き換えが
不可能な分野があるのは痛いね

一時期勉強してたけどこれで一気に萎えた
こんなの絶対に普及しないと確信したし
0798デフォルトの名無しさん
垢版 |
2017/11/21(火) 08:59:45.88ID:53/zLj3n
>>796
ギョーミーアプリのUIがセンスなしの塊だからそれで良いのだ。
ギョーミーって最初に見たときは英語だと思ったわw
0799デフォルトの名無しさん
垢版 |
2017/11/21(火) 12:31:14.01ID:5itqrRZG
一般論としては訳分からんジャーゴン使いたがる人は群れたい人だね
ジャーゴンの機能ってそれを使うことで同じ村の村人の一員であると感じさせることだから

それがいいか悪いかしらんけど、俺個人は気色悪いし嫌いだねこういうの
0801デフォルトの名無しさん
垢版 |
2017/11/21(火) 12:52:42.81ID:JYBkdGYB
そういえばWPFって3D機能あるけど使ってる奴いるのかな
業務でやらされたら悪夢だね
0802デフォルトの名無しさん
垢版 |
2017/11/21(火) 12:59:08.76ID:euHtQ1vT
3D使うならブラウザ上のほうがパフォーマンス高いよ
開発の情報も多いし

WPFの3Dはおまけ機能だから
0804デフォルトの名無しさん
垢版 |
2017/11/21(火) 14:32:56.14ID:eAcVzyfG
ジャーゴンって言うか
死んでる? じゃあ、他の生きてるの全部殺して再起動しろ
なんて会話が飛び交う業界だしw
0806デフォルトの名無しさん
垢版 |
2017/11/21(火) 16:18:22.00ID:5itqrRZG
>>804
殺すっていう言葉は他の工学でも昔から割と使うよ
俺は元は電気系だけど無効化するって意味で「そのTrを殺して...」とか普通に言う
たぶん機械系でも使うはず
0811デフォルトの名無しさん
垢版 |
2017/11/22(水) 00:19:46.15ID:KA0qTObf
visual studio !
0813デフォルトの名無しさん
垢版 |
2017/11/22(水) 09:41:20.61ID:9afa34qB
xamlを動的に生成、もしくは読み込ませるのはFlowDocumentを作りたいとき
具体的には印刷プレビュー
0814デフォルトの名無しさん
垢版 |
2017/11/22(水) 22:27:54.08ID:9afa34qB
今さら気付いたんだが、デバッグ起動でウインドウを表示したままxamlを編集すると
リビルドなしにそのままデザインが反映されるのな
デュアルモニターなら作業はかどる
0815デフォルトの名無しさん
垢版 |
2017/11/23(木) 10:33:10.66ID:34iV4lyO
xamlで余白の多い文字(例えばm)などの余白部分を切り取って
矩形で切り出したいんだがやり方分かりませんか?
0818デフォルトの名無しさん
垢版 |
2017/11/23(木) 16:33:14.91ID:O+EE0rTX
ymW

確かに上にも下にも余白がある。
ペゾルトの本に書いてあった気がするけど何か名前もついてるんだよねこれ
こういうのWPFの守備範囲と違うような気がしないでもない。知らんけど
0820デフォルトの名無しさん
垢版 |
2017/11/23(木) 16:48:04.17ID:E5KFBI6l
WPF フォントで検索しようとしたら
「ふ」を入力したところで「普及しない」ってサジェストされたぜ
悲しいね
0821デフォルトの名無しさん
垢版 |
2017/11/23(木) 16:57:35.86ID:DqyU4UwD
さすがにもう10年以上経ってるんだから「普及しなかった」でいいだろ
そろそろ楽にしてやろうぜ
0822デフォルトの名無しさん
垢版 |
2017/11/23(木) 18:53:53.42ID:4OkBFxYd
UWP 普及しない
0823815
垢版 |
2017/11/23(木) 19:07:59.14ID:34iV4lyO
ストアに出すソフトのロゴをwpfで書いたんだが、結局merginをマイナスにしたりViewBox使ったり
力技でなんとかやっつけましたわ
画像処理あまり知らないんでこういう時ホント困ります
0825デフォルトの名無しさん
垢版 |
2017/11/23(木) 19:13:02.36ID:4OkBFxYd
WPFレイアウトの問題はともかく
グラフィック扱うならそれ用のソフト使えばいいのに
0826デフォルトの名無しさん
垢版 |
2017/11/23(木) 19:15:18.25ID:jpFcmNrK
もともとストアアプリを作りたい人以外には制約が多いだけの仕組みだしな。
けっこう強引に誘導してたのに、Windows Mobileが無くなるなら梯子外されたようなもんだ。
0828デフォルトの名無しさん
垢版 |
2017/11/23(木) 20:49:21.26ID:28qVecZE
UWPはプロセス間通信できないとかファイル操作に制限がありまくりとか致命的すぎる。
DBMSプロセスと通信が出来ないんじゃギョーミーアプリが作れん
0829デフォルトの名無しさん
垢版 |
2017/11/24(金) 03:41:09.20ID:mQf53q1A
PCでアプリ作るならこれで作れ、というものを作らないとな。
WPFの分かりやすいやつというかUWPの制限緩いやつというか。
今のMicrosoftはまったくビジョンがない。
0831デフォルトの名無しさん
垢版 |
2017/11/24(金) 11:05:45.58ID:mPUfH2u/
WPFがわかりにくい、面倒くさいって印象は、標準のフレームワークの機能不足もあるように思う。
TreeViewで選択されたTreeItemを取得するのに、単純にBindingできりゃよかったんだが
それができないんで面倒くさい添付プロパティ書く羽目になるとか。
MSにしてみれば「拡張する手は用意したから基本機能は多少不足しててもいいだろ」ってことかもしれんが。
0832デフォルトの名無しさん
垢版 |
2017/11/24(金) 11:46:48.54ID:1+0DqtV5
>>829
ビジョンはあるでしょ
・業務アプリはWebへ完全移行
・ネイティブアプリはコンシューマ向けのWebサービスのクライアントだけが残るので、それに特化したシンプルなプラットフォーム(UWP)があればよい
0834デフォルトの名無しさん
垢版 |
2017/11/24(金) 12:01:59.99ID:zpTIVf12
Webで全部というのは無理がある
エクセルオンラインもオンライン会計もオンライン顧客管理も嫌がる
できるのはせいぜいメール仕訳とグループウェアで会議室予約
それに付随する週間売り上げレポート自動作成くらい
これらは集約された鯖に常時接続が効率いい
そのサーバーもCSVで出力してくれ、アトハエクセルデヤル、が常套句だったりする
0835デフォルトの名無しさん
垢版 |
2017/11/24(金) 21:38:21.84ID:tVS6N6Kc
ビジョンつっても基本的にアレなんだけど、MFCからしてアレな出来だったし
WinFormsはDelphiからの輸入だし、なんつーか
0837デフォルトの名無しさん
垢版 |
2017/11/27(月) 00:52:00.43ID:J+H360A5
>>792
まじかよ
2段DGVとかサドパ買う金ないから勉強してるけど
リッチテキスト絶望なんか、、
0840デフォルトの名無しさん
垢版 |
2017/12/01(金) 21:30:59.69ID:TIs6YR+X
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 のご利用をご検討ください。
0842デフォルトの名無しさん
垢版 |
2017/12/04(月) 17:26:53.28ID:jUCJdOso
下記の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>
0844デフォルトの名無しさん
垢版 |
2017/12/05(火) 10:07:40.24ID:2ID5QeqJ
>>843
ありがとうございます!
結局一からテンプレートで作れということですね。
0845デフォルトの名無しさん
垢版 |
2017/12/06(水) 12:33:29.17ID:zkLW2Dlw
DataGridのセルで文字列を自動的に折り返しさせるにはどうすればいいですか?
0847デフォルトの名無しさん
垢版 |
2017/12/06(水) 14:01:58.75ID:uXe6tuIh
どうでもいいけど自己解決したときはその方法を書いておいてくれると同じ疑問を持った他の誰かが見たときに役立つよ
0848デフォルトの名無しさん
垢版 |
2017/12/07(木) 02:00:54.89ID:CphyNnDm
WPF会社で使おうとしたけど情報少ないわ複雑だわで断念した
WinFormがやはりシンプルで良いな
特にビットマップの扱いがWPFは不便すぎ
0849デフォルトの名無しさん
垢版 |
2017/12/07(木) 08:12:13.45ID:PjTiKcum
>>848
確かにシンプルなAPIじゃないね。
でも、画像を出力することが目的じゃない限りは使うことないから、あんまり気にしたことなかった。
0850デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:16:38.26ID:vSHyWsbi
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>
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況