WPF(.NET4.x, .NET Core) GUIプログラミング Part23

■ このスレッドは過去ログ倉庫に格納されています
2019/05/16(木) 07:52:32.39ID:8fOYIMEO
Windows Presentation Frameworkについて語るスレ。

前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part22
https://mevius.5ch.net/test/read.cgi/tech/1513175747/

関連スレ
Windows 10 UWPアプリ開発 Part 2
http://mevius.2ch.net/test/read.cgi/tech/1499658092/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
2デフォルトの名無しさん
垢版 |
2019/05/16(木) 12:11:07.29ID:7Bq3MhCf
2
2019/05/16(木) 13:49:41.99ID:fwGb8lUO
スレタイXAMLはあったほうがよかったんじゃ?
2019/05/16(木) 14:58:46.33ID:6HLPrznt
UWPは別のスレがあるな
2019/05/16(木) 19:32:09.26ID:lkxfo5od
前スレから
https://devblogs.microsoft.com/dotnet/introducing-net-5/
2019/05/16(木) 20:00:20.87ID:O824UyCl
WPFにx:bind来てくれないのかいぃぃ
2019/05/17(金) 16:05:39.31ID:GiXqVPbm
ゲームエンジン作れますか?
2019/05/17(金) 16:23:31.74ID:GiXqVPbm
openfiledialogとsystem.diagnostics.process.startの違いはなんでしょうか
openfiledialogのほうがエクスプローラが開かなかったですが
実現したいのは、フォルダを開いてファイルを選択するというものです

var dialog = new OpenFileDialog();
dialog.InitialDirectory = @"C:";

System.Diagnostics.Process.Start("explorer.exe",@"c:");
2019/05/17(金) 17:30:07.31ID:GiXqVPbm
openfiledialogはファイルを開くためのものですね
勘違いすてまし
2019/05/17(金) 17:40:31.39ID:GiXqVPbm
wpfでフォルダのファイルを、リストビューなどで表示するには何を使用するんでしょうか
2019/05/17(金) 18:23:47.47ID:xZgfJxB6
リストビューで表示するんなら使用するのはリストビューでしょw
2019/05/17(金) 18:44:46.93ID:GiXqVPbm
https://dobon.net/vb/dotnet/file/getfiles.html
wpfでaddrangeが出てこないのですが、なぜでしょうか
addしか出てきません
addrangeはSystem.Collections.Generic;に含まれるそうですが、これはきちんと記述しています


>>11
表示するコントロールはそうなんですが、一覧を取得する方法を調べてました
2019/05/17(金) 19:04:56.93ID:zsP3biP5
>>12
Formsのほうのサンプルじゃないの?
2019/05/17(金) 19:24:12.06ID:GiXqVPbm
>>13
wpfじゃないんですかね
だとしたら何を使うんでしょうか

マイクロソフトのリファレンスはC#用とwpf用わかれてるわけではないんですよね?
2019/05/17(金) 19:55:42.73ID:GiXqVPbm
for使うことになってるんすかね?
2019/05/17(金) 20:00:22.36ID:efANPUq5
this.ListBox1.ItemsSource = Directory.EnumerateFiles( @"C:\Windows" );
17デフォルトの名無しさん
垢版 |
2019/05/17(金) 20:04:39.86ID:efANPUq5
もしくは
foreach ( var file in Directory.EnumerateFiles( @"C:\Windows" ) )
{
this.ListBox.Items.Add( file );
}
2019/05/17(金) 20:07:19.28ID:R147Wd4Y
>>14
リファレンスは分かれてるというか、違う。名前空間が。
datagrid にしても、forms で使用されているコントロールとwpfで使用されている物とは違う。
webにあるサンプルなど、どちらのコードかってのは、明記されてない限り読み込まないとわからない
2019/05/17(金) 20:23:25.50ID:GiXqVPbm
for (int i = 0;i< files.Length;i++) {
listbox_right.Items.Add(files[i]);

}

>>16,17
これでいけました
ありがとうございます
addrangeはないみたいなので、ループしないと駄目なんですね

>>18
名前空間で判断するしかない感じですか
formと共通してるものもあれば、違うものもあるって感じで、ごっちゃになってて少し分かりづらいですね
20デフォルトの名無しさん
垢版 |
2019/05/18(土) 12:57:14.57ID:vGWC+tVZ
>>19
>addrangeはないみたいなので、ループしないと駄目なんですね

違うんじゃないかな。あなたが、>>16の手段使わずに、>>17の手段つかった
からじゃないの?
2019/05/18(土) 19:02:24.50ID:M6x4drXG
wpfでレイアウトしたいです
よくある、左、中央、右というペインを作りたいです
単純にグリッドを3つ並べるだけでは駄目なようですが、良いコントロールはありますか?

>>20
そうかもしれません、、、
22デフォルトの名無しさん
垢版 |
2019/05/18(土) 19:28:57.10ID:vGWC+tVZ
>>21
先の質問についてだけど、データバインドを理解していないんじゃないだろうか
WPF使うんだったら、データバインド使わないと損ですよ。
2019/05/18(土) 19:32:47.57ID:GtOtQ7tS
>>21
レスであるように、先にバインド覚えたほうがいいよ。いっぱいコントロール自作することになるから
2019/05/18(土) 19:42:11.85ID:4KuUGYIj
>>21
Gridを分割するかDockPanel
境界をマウスで動かしたりしたいなら前者
2019/05/18(土) 20:10:22.57ID:M6x4drXG
>>24
gridですか
formにあったsplitcontainerみたいなのがなくなっていたんでわからなかったです

>>22,23
知らなかったので。今バインドってのをやってみました
Xamlに変数をバインドしておいて、プログラム側でそれを書き換えるというイメージでいいんですか?
<Button Content="{Binding X}" />
みたいな感じですね
解説が難しいのでなんのメリットがあるのかイマイチわかりませんが、Xaml側のX変数が複数だった場合、手作業で何箇所も書き直すより効率的だねってことですかね。または、フォームを複数作った場合、別のフォームでも数値を共有できたり。
2019/05/18(土) 20:32:07.67ID:ejkLT9cK
WinFormsの事は忘れるんだ
2019/05/18(土) 20:46:12.34ID:M6x4drXG
忘れます
もともとwinformのソフトの文字がちっちゃくて、不満だったから自分でつくろうと思ってるので
あれって、拡大とか出来ないんですね
2019/05/18(土) 21:51:41.94ID:XXYGI5ia
Data Binding なら、Vue.js だろ
2019/05/18(土) 22:35:23.21ID:4jqg+g7M
>>21
レイアウト関係はパネルっていう種類のコントロールを使う
ここをGoogle翻訳につっこんで読むといい
https://wpf-tutorial.com/panels/introduction-to-wpf-panels/
そんな難しい英語じゃないからそのまま読んでもいいけど
2019/05/19(日) 08:39:23.42ID:A9JEys8J
>>29
どうも ベースはグリッドでやってみます
2019/05/19(日) 09:46:46.46ID:1wu/sFtt
>>30
他のパネルあるのになんでグリッド使うの?
2019/05/19(日) 10:06:41.73ID:A9JEys8J
>>31
wpfだとグリッドが一般的なやり方だと思っていたからです
どういうセオリーがあるのかまだわかっていません
2019/05/19(日) 10:26:31.56ID:1wu/sFtt
>>32
>>29読めよ
2019/05/19(日) 10:47:57.25ID:rGWK4TSn
StackPanelしか使ったことないな…
2019/05/19(日) 11:06:57.27ID:A9JEys8J
>>33
読みました
エクスプローラのような3ペインにどれが適切かわかりませんから、今ひとつずつやってます
2019/05/19(日) 11:51:22.73ID:A9JEys8J
今stackpanelを使っていますが、エクスプローラのように左右が細長くて、
20% 60% 20%というふうに出来ますか?子要素に何を指定するといいですか?%指定は出来ないようです。
絶対値を指定すると全画面にしたときにレイアウトが崩れるから駄目ですよね
2019/05/19(日) 12:26:40.42ID:A9JEys8J
更に境界線を←→で調整したいです
チュートアレば教えてください
2019/05/19(日) 12:42:10.72ID:nGjZxT14
>>37
GridSplitter
2019/05/19(日) 13:11:30.58ID:PmP7x88s
>>37
https://blog.okazuki.jp/entry/2014/12/27/200015

ここをイチから読みなせえ
2019/05/19(日) 13:58:42.30ID:A9JEys8J
↑あい
2019/05/19(日) 16:35:16.33ID:A9JEys8J
>>38
どうも 自動で境界線にフィットしてくれるんですねこれ
<StackPanel Orientation="Horizontal">
<Button Content="hoge" />
<GridSplitter HorizontalAlignment="Stretch" Width="5"/>
<Button Content="hoge" />
<Button Content="hoge" />
</StackPanel>
でもこれやっても動作しないのはなぜでしょうか?
ボタンも画面いっぱいまで広がりません。
2019/05/19(日) 16:41:45.96ID:nGjZxT14
>>41
GridSplitterは縦分割もしくは横分割したGridで使うものだよ
2019/05/19(日) 16:52:21.95ID:A9JEys8J
↑確かに名前の通りですね
gridで試してみます
44デフォルトの名無しさん
垢版 |
2019/05/19(日) 17:40:18.44ID:9qpO3YcP
>>36
>%指定は出来ないようです

おいおい勝手に決めちゃうな、ちゃんとできるよ。
単に2:6:2になる値にすればいいだけ。
2019/05/19(日) 19:24:20.26ID:A9JEys8J
アスタリスクで指定できるんですね
すみません
2019/05/19(日) 19:51:56.06ID:A9JEys8J
mvvmという概念がよくわからないのですが、
mはモデル、vはビュー、vmはビューモデルですよね
wpfのプロジェクトでいうと、ビューはxamlで、vmはmainwindow.xaml.cs
mはビューに表示する数値を処理する関数を保存しておくファイル(自分で作る?)という感じでしょうかね
超絶簡単なチュートはないでしょうか?どこも説明が難しいです。
2019/05/19(日) 19:57:41.44ID:1wu/sFtt
MVVMなんて最初は意識しないでformsみたいにxaml.csにそのまま処理書くのでいいよ
2019/05/19(日) 20:01:39.69ID:2BHDEQ1u
>>46
*.xaml.csはViewの一部。ViewModelじゃない。
2019/05/19(日) 20:11:28.61ID:A9JEys8J
>>47,48
そうします
わかわからんですし、大規模になることはないので
2019/05/19(日) 20:55:09.12ID:qecuZkKO
wpf & mvvm が普及しなかったのはこの敷居の高さなんだよな…
2019/05/19(日) 21:15:35.77ID:ugKit8lS
>>50
コミュニティに頼らずに自前でそこそこサポートするのが売りだったのに、この辺りから放棄し始めたんだよな
2019/05/20(月) 05:06:11.18ID:GmmrlA8O
wpfって将来性がないってことですか?formの代替えって他にあるんでしょうか?
2019/05/20(月) 06:34:33.69ID:xhf1KGbK
Electron
2019/05/20(月) 06:47:23.90ID:SII4uEKR
極論するとWindows上で動くアプリケーション自体が下火だからなぁ
PC上のローカルなリソースを触らない限りはJavaScriptのSPAで書いとけばWindows以外でもそのまま動くし
MVVMもVueやAngularで始めるほうが理解しやすいように思えるし
2019/05/20(月) 07:05:09.37ID:GmmrlA8O
想像ですけど、jsベースだとローカルでもwebでも行けるから便利ということですよね
v
2019/05/20(月) 11:49:59.73ID:GmmrlA8O
機能からgridレイアウトをやって、ある程度形はデキたんですが、縦に目一杯表示されません。
調べるとverticalalignmentをストレッチにすればいいということなんですが、駄目です
親も子もストレッチかけてるんですが、どこが駄目でしょうか。

ウインドウのサイズがデフォルトのサイズの場合は100%までストレッチされますが、全画面表示まで拡大すると、stackpanel_innerにデフォルトのサイズが適用されます。

https://ideone.com/3RZafi
2019/05/20(月) 12:18:39.68ID:UpaSmFYv
>>56
stackpanel_outerはDockPanelに変更して、MenuにDockPanel.Dock="Top"追加
stackpanel_innnerは無くすか、StackPanel以外(DockPanel/Grid等)にする
2019/05/20(月) 15:28:14.16ID:GmmrlA8O
↑どうもデキたです
stackpanelがなぜ駄目なんでしょうか
htmlのインライン要素のような扱いなんでしょうか。
59デフォルトの名無しさん
垢版 |
2019/05/20(月) 16:43:30.51ID:03iVSpcv
>>52
以前は、ストアに対応していない(しない)などの方向から
WPF終了説が言われていたのだけど、それが変化してきたようで、
WPFの利用がもっと増加する可能性も出てきたみたい
ここ数か月の発表に注意してみるといいかもしれない。
デスクトップアプリが見直されてきている流れもあるので。
2019/05/20(月) 16:54:53.51ID:7rlywuEl
MSが一度見限ったプロダクトを見直した例はない
時間は有限なんだからこういうのは悪い方に考えたほうがいいよ
2019/05/20(月) 23:12:06.78ID:F98TWhut
「見限った」「見直した」って具体的にどういうことを指しているんだろう。
2019/05/20(月) 23:31:21.89ID:ouD9VRE7
見限った → メンテナンスモードに切り替えた
見直した → 再度アクティブな開発を始めた
かな
2019/05/20(月) 23:54:57.44ID:F98TWhut
そういう意味でなら、WPFはまだ見限られてはいないわけだ。
2019/05/21(火) 00:19:28.65ID:00e1l8X+
WPFはとっくの昔にメンテナンスモードに入ってる
UWPだけがアクティブ
65デフォルトの名無しさん
垢版 |
2019/05/21(火) 00:41:18.11ID:TRpqXUmi
>>64
>UWPだけがアクティブ
WPFはともかく、MSのこの数か月見てた方が良いよ
2019/05/21(火) 00:59:54.43ID:KXg6s5t+
>>65
Build 2019でCore対応以外になんかWPF/WinFormsの新しい話題あったっけ?
MSを信じるのは勝手だけど、本当にそれが自分にとってプラスになるのかは一度立ち止まってよく考えてみた方がいいよ
君自身のキャリアの問題だ
2019/05/21(火) 05:16:38.24ID:Ht8dWCV6
結局、c++が普遍的なんでしょうか。
やったことはないですが、個人で使うものではないとか。
2019/05/21(火) 06:07:31.76ID:GLuE/7pA
>>66
そのCore対応がデカいんじゃないか
どれだけ投資してると思ってんだよ
2019/05/21(火) 07:43:54.26ID:J5RbKPKD
>>68
そう思う?移植完了の後はロードマップ真っ白なのに?
ちなみにdotnet/wpfは4人くらいで作業していて、必要最小限の単純な移植を超える仕事は厳しく禁じられているようだ
2019/05/21(火) 08:07:51.81ID:jKYjm96N
>>65
core対応でアクティブだと言えるならWPFだけじゃなくwin formsも
アクティブと言うことになるけど…

アクティブじゃないよ
もう開発してないよ
71デフォルトの名無しさん
垢版 |
2019/05/21(火) 09:04:23.15ID:TRpqXUmi
一度捨てたと思ったデスクトップの必要性が再認識されてきている。
これから夏にかけxaml islandの話題がMSより増えて行くだろうから
まずはそちらを気にした方が良い。デスクトップもUWPだけで行きま
しょうというMSの方向性が大きく変化したことは確かだから。
UWPのコントロールもそれぞれが共有できる方向に変化してきたので。
ただし、FORMに関してのxaml ilandはどうやるの?という疑問はある。
とはいえ、WPFが新たに拡張されてという話とはちょい異なる。
この数か月のマイクロソフトの発表をみましょ。
2019/05/21(火) 09:15:29.44ID:1xdRixLR
>>69
もしかしてひとつのフレームワークに4人ってのが少ないとでも思ってる?
73デフォルトの名無しさん
垢版 |
2019/05/21(火) 12:54:23.99ID:JEq70M1l
MSレベルで4人雇ったら、年5000万位かかるか
2019/05/21(火) 13:27:03.74ID:J5RbKPKD
フルタイムで作業してるのは一人だけっぽいね
2019/05/21(火) 16:39:45.49ID:1xdRixLR
>>74
C#だってフルタイムは一人だけやでw
2019/05/21(火) 19:25:13.12ID:GLuE/7pA
あれだけ押してるBlazorもフルタイムは1人だもんね
2019/05/21(火) 19:31:06.98ID:00e1l8X+
WPFが好きすぎて頭が逝っちゃってる人の集まり?
2019/05/21(火) 19:52:22.69ID:L8K016dB
嫌いなのに張り付いてる方が頭が逝ってるだろ
2019/05/21(火) 19:54:10.43ID:n+3BxqXh
ID:00e1l8X+はマ板で呟いてくれんかね
2019/05/21(火) 20:12:32.33ID:kdkwqODu
>>73
MSレベルっつーか人月単価100万ってそんなに優秀じゃないぞ
2019/05/21(火) 23:36:21.83ID:lCMEKqdP
この中でvb.net派の人いるかな....
新しいプロジェクト作成するたびににC#に移行しようと思っても、やっぱりVB選んでしまう...
おかげでC#のサンプルでも即座にVBに変換できるようになったわ
2019/05/22(水) 04:03:18.31ID:CgjVdHTS
これだから、アラフィフのおじいちゃんは...
2019/05/22(水) 07:50:35.59ID:5R6mSu1H
ぶいびーww
2019/05/24(金) 23:18:25.57ID:a/+LqS67
別にVB.NETでもかまわんと思うけどね
C#を推奨したい日本マイクロソフトのバイアスがずっと続いてるけど、ちゃんと他人にも分かる様なコード書けば問題無い
まあ、それがVBプログラマーの悪い所だが
2019/05/25(土) 00:17:27.23ID:9Yazqsa/
VB.NETでラムダを多用するようなソースコードを書くと見づらくてたまらないんだよな

まあ一人で書いてるソースであれば好きにすればいいんじゃないとも思うけど
引き継ぎや担当者アサインのことを考えるとちょっとなあ
若手・未経験者に今更VB.NETを覚えさせるのも後ろめたいというか倫理的に問題があるし
かといって「VB.NET出来ます」っていう人のスキルって大抵VisualStudio2005〜2008あたりで止まってる人が多いし
新しめの(VS2015/2017あたりの)文法を使うならそれこそC#で書くほうがスマートだし
2019/05/25(土) 00:26:30.22ID:1AJ3YN9O
俺は基本的にはVB派だが、ラムダ式だけは何とかならんかったのかと思うわ

あとヌル合体演算子はよ
2019/05/25(土) 04:17:14.56ID:vfi1mbHq
今あえてC#よりVBを選ぶ理由を知りたい
88デフォルトの名無しさん
垢版 |
2019/05/25(土) 04:17:54.71ID:WHAQulv7
マイクロソフトが好んでやりたいというより、VBで行きたいという声がスゲー多いためにそうせざるを得ないということだろな。これが人間社会ちゅうものなんだろう。
2019/05/25(土) 04:42:40.16ID:P9kv6fd4
リストボックスに画像表示するにはなんの関数を使うのか教えてください
ヒントだけでいいです

String[] img = System.IO.Directory.GetFileSystemEntries(
@" C: \Users\ワイ\Desktop"
);
//Directory.GetFileSystemEntries Method
for (int i = 0;i< files.Length;i++) {
listbox_right.Items.Add(img[i]);
これだとテキスト表示になります
そもそもlistboxはテキストのみなんですかね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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