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/
2019/05/25(土) 20:24:09.29ID:Tic4GHY3
>>107-108
VMwareなりVirtualBoxとか使えばいいだけだろ
メモリー8GB程度あればCentOSの最小インストールなら普通に動くし
2019/05/25(土) 20:36:18.47ID:6cjkDEDO
>>109
常時起動ならレンタルサーバ借りたほうがいいよ
てかVMwareにLinux入れるくらいだったらBash on Ubuntu on Windowsでええやろ
2019/05/25(土) 20:43:31.92ID:NI3fO233
Bash on Ubuntu on Windowsはないわ〜
2019/05/25(土) 21:19:40.28ID:P9kv6fd4
バインドについて勉強してます
チュート試してみたのですが、うまく動かないので間違いの指摘をお願いします
https://ideone.com/Dgu2QJ

https://araramistudio.jimdo.com/2016/11/25/wpf%E3%81%AE%E3%83%90%E3%82%A4%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0-%E3%81%9D%E3%81%AE%EF%BC%91/

参考ページです



また、viewmodelの役割を大雑把に言うと何になるでしょうか?
仲介役ということで、上のコードでいえばclass1.csの部分かと思います。
viewとmodelだけで事足りるような気がするのですが。
2019/05/25(土) 21:22:05.45ID:UN9uDEfa
>>110
ケースバイケースだろ
個人開発でテストだけでレンタルサーバーまで借りなくてもいいだろうし小規模ならRaspberry Piとかでもいいし
2019/05/25(土) 21:26:25.93ID:+RRcuc5n
>>113
個人利用ならAzureやAWSの無料枠で十分
2019/05/26(日) 00:32:18.87ID:5z4iQyi0
>>112
それは実装途中の物みたいだから続きを読んでいけばいいんじゃないかな(無責任)
116デフォルトの名無しさん
垢版 |
2019/05/26(日) 08:21:06.40ID:7w4cgfO4
UWPの次の将来性のあるフレームワークができるまではWEBで食ってようかな
windowsアプリなんて金にならなさそうだし
2019/05/26(日) 13:55:20.05ID:C4yZNgS0
食ってようかな(笑)
118デフォルトの名無しさん
垢版 |
2019/05/26(日) 15:10:46.67ID:WAmAGMjw
>>116
どちらにしろ、受託じゃたかが知れてる
2019/05/26(日) 16:10:16.91ID:CXWnAd1n
食っててくれたまえ
2019/05/26(日) 19:50:11.76ID:KIe0CODm
hoge{get;set;}
これの意味がわからないのですが、超絶シンプルな例ってないんでしょうか?
例えばテキストボックスコントロールのTEXTにhogeという変数をバインドして、
hogeにプログラムないでhoge="文字";などと代入する

その歳の仲介というイメージなのですが、具体的にどういう動きをするんでしょうか
プログラム内で"文字"をgetして、バインドされたhogeにsetする?なんて意味ですか?
2019/05/26(日) 19:50:57.04ID:KIe0CODm
要は通常はxamlからhogeの値は参照出来ない
それを許可するための宣言がgetということですかね?
2019/05/26(日) 19:53:46.88ID:gL51xVlR
ただのプロパティやろ
2019/05/26(日) 19:54:23.45ID:K5jCBK8C
>>120
全然違う
ここ読め
https://ufcpp.net/study/csharp/oo_property.html
2019/05/26(日) 20:00:05.12ID:CXWnAd1n
このレベルからWPFとか素人にハーフマラソン走らせるレベル
125デフォルトの名無しさん
垢版 |
2019/05/26(日) 20:15:28.64ID:7w4cgfO4
>>120
君にはプログラミングは無理
肉体労働するといい
2019/05/26(日) 20:23:59.98ID:S2MuqUmA
ID:P9kv6fd4の馬鹿か
2019/05/26(日) 20:34:08.79ID:bvJijhhT
基礎からやろう?って何週間も前からいろんな人から散々言われているのにそういうアドバイスは一切無視して延々と質問続けるだけだからね
ツールは当然一生完成しないし技術は大してつかないで終わるよ
2019/05/26(日) 22:17:35.93ID:lD8uie1v
>>120
wpfはviewとviewmodelをdatacontextを介してやりとりするんや
例えばmainviewのdatacontextにmainviewmodelクラスを指定した場合、
mainviewmodelクラスのプロパティの値をバインディングすることでviewに表示することができる

c#でもJavaでもプロパティは外部への情報公開を目的としてるから
その意図をそのまま利用しとるだけ

大分ざっくりした説明だけれど、もし全く理解できないのなら前でも誰か言ってたけど、
windows formにするかコードビハインドに書くやり方でまずはやったほうがいい
JavaScriptにもMVVMの概念はあるからそっちから攻めるのもありかもしれない
2019/05/26(日) 22:20:05.47ID:lD8uie1v
ごめん、Javaのプロパティのとこは無視してくれ
2019/05/27(月) 07:42:24.34ID:35m6EZY7
>>120
内部変数を省略してるだけなんよ
private の内部変数がコンパイル時に勝手に作られる
2019/05/27(月) 11:51:22.51ID:JRCNDAml
>>120
自動実装プロパティっていつ使うのって話ならWPFはほぼ関係ない
自動実装プロパティは.netの機能でWPFは.netの一部
というだけの話

これは基礎からやれって話なのか?だけど
今からならwindows formsは勉強しなくていいと言う人もいるし
実際しなくていいだろう
ただWPFの解説書に.netについての解説なんかないよね
1からやる場合こういう.netの知識が曖昧になっても不思議はないと思う
.netは追加機能も多いし巨大すぎる
2019/05/27(月) 18:13:11.10ID:g3rj1HTz
> 今からならwindows formsは勉強しなくていいと言う人もいるし
> 実際しなくていいだろう

何を馬鹿なことを言ってるんだw
最近の初心者向け本では逆にwinformsしか説明してない
WPFなんて眼中にない
2019/05/27(月) 18:24:54.78ID:Y0xP1Rix
>>132
素人向けだからだろ?
wpfはMVVMとかxamlがくっついてくるから、winformの方が初心者向けなのは当たり前だ
2019/05/27(月) 19:33:58.77ID:re6ifzAE
で、ユニバーサルプラットフォームって
何と何と何があるのかな?
2019/05/27(月) 21:13:35.13ID:rm61aUh5
UWPとWPFの区別がつかない人がドヤ顔でマウンティング
2019/05/27(月) 21:27:11.21ID:llXnDosY
最近増えてきたガラスのような表現のフレームワークはWPFですか?
2019/05/27(月) 21:30:57.15ID:LNS8v7+t
いいえ
あれはUWPです
138デフォルトの名無しさん
垢版 |
2019/05/28(火) 19:02:40.16ID:ZZsS+Znm
xaml islandが出てきて、UWPじゃないとできないという制約が
なくなってきたね。
2019/05/28(火) 19:15:12.49ID:az36SE/9
そんなのあんだ。
2019/05/28(火) 19:38:30.31ID:MzojxIZT
逆に今後の新規開発や追加開発ではWPFもういらないってことなんだけどな
既存のWPF部分に手を入れざるを得ない場合を除き、常にWindows Runtimeで作る
それが今後のWPFアプリケーションの唯一の正しい作り方だ
2019/05/28(火) 20:56:00.72ID:5uVnslUx
>>140
ジョジョでいう
シルバーチャリオッツレクイエムみたいなもんか
2019/05/29(水) 01:24:16.83ID:l3SpZv82
>>141
さっぱりわからん
2019/05/29(水) 09:50:06.92ID:v46ep+GI
>>141
スタープラチナのザワールドだろ

通常はスタープラチナの精密で力強い攻撃で対応して無理なら時を止める
2019/05/29(水) 12:19:09.94ID:1hOUMMYr
Double型をバインディングしたTextboxに小数点を入力するとエラーになり問題、Extended Wpf toolkitのDoubleUpDownをTextboxの代わりに使ったらあっさり解決...
今までわざわざstring型でバインディングして数値だけ入力制限したりあれこれしてたのが無駄だったわ
2019/06/01(土) 16:43:20.75ID:228VL8j4
Windows API Code Packというのは機能を拡張するものですか?
c#で使用できるんでしょうか?
2019/06/01(土) 17:32:12.45ID:Ai3idouJ
できるよん
2019/06/01(土) 19:39:51.72ID:228VL8j4
はい
2019/06/02(日) 09:43:53.79ID:OPrZ2CcO
Directory.GetFileSystemEntriesで画像を取得できますか?
2019/06/02(日) 10:15:11.60ID:H0pYHCN3
ID:P9kv6fd4の馬鹿か
2019/06/02(日) 10:25:53.31ID:OPrZ2CcO
なんでそんなに攻撃的なんですか?
2019/06/02(日) 10:36:47.06ID:VOFsXmY2
>>150
関数の仕様をリファレンスで調べてきて引数と戻り値と動作を読んで、それでも分からないことがあったらそこを具体的に質問すると丁寧に答えてもらえるぞ
2019/06/02(日) 10:59:47.73ID:bzcjxT5l
wpf関係ないじゃん
何がC#でなにがwpfかもわかってないんでしょ
散々チュートリアルやろ?って忠告を無視して延々と同じような質問繰り返してりゃ答える側も馬鹿らしくなるよ
2019/06/02(日) 12:05:12.73ID:H0pYHCN3
>>150
しつこい馬鹿だから
いい加減死ねよ
2019/06/02(日) 21:42:55.58ID:1gGjmj25
画像ってのがサムネイルのことならWindows API Code Packで出来るんだが
もう少し自分で調べたほうが良いと思うよ
2019/06/02(日) 22:13:49.95ID:FzL8t6js
Windows API Code PackはForkがいくつもあってどれを使えばいいのか分からないな。
ライセンスも元のMSのページが消えてて良く分からんし。
2019/06/02(日) 23:35:24.11ID:1gGjmj25
ただ、ファイルシステムをCodePack使わずにWin32API使うと面倒になるからな
言うほど大変なわけでもないが、独特な管理方法で面食らったわ
2019/06/03(月) 00:00:34.97ID:/fVOuCWc
>>156
ファイルシステムってなんのこと?
フォルダー選択ダイアログとかを出すことかな
2019/06/03(月) 15:10:33.38ID:kNKAj5df
社内業務用にpowershell+.NETで簡易GUIを表示するようなアプリケーションを作る場合、商用ライセンスとか必要なんでしょうか?
2019/06/03(月) 16:58:31.60ID:L8VSMqPX
いらんでしょ
2019/06/03(月) 18:40:28.28ID:dutM1mQ+
どっちの意味だろう?
・(作成するアプリケーションの)商用ライセンス
・(VisualStudioの)商用ライセンス

よく主語が抜けてるとか言われてるけど
この場合、連体修飾語が抜けてるよね(今調べた)
2019/06/03(月) 18:46:53.35ID:oLmmsHsK
後者の意味にしか取れなかった、というか前者の意味がわからん
社内用に作ったアプリに商用ライセンスつけるか、って話?
2019/06/03(月) 18:50:14.74ID:Y6wyUKBm
社内配布でも基本的にはVSの開発者用ライセンス必要だし、
オープンソース使ってるならライセンス違反にならんように気をつけなあかん

自分個人だけで使うなら特にライセンス気にすることはないだろう
2019/06/03(月) 18:55:21.90ID:dutM1mQ+
うん
前者なら上長に聞けと思った

後者について VisualStudio Community のライセンスを調べたところ、
オープンソースプロジェクトや学習・研究目的ならどんな企業も問題ないが、
相談のケースはクローズドソースと思うので、以下の条件になるはず

・一般企業なら5ユーザーまで
・大企業(250台PCを所有、または売上100万ドル)なら、使用不可
2019/06/03(月) 19:23:31.03ID:iKNLzo07
VS Express2015なら無料で使用できますね
あとVS Codeを使うことも可能だが、WPFを開発って結構苦行かもしれんね
2019/06/03(月) 19:31:36.01ID:gHWgGxDB
メモ帳とかでソース書いてWindowsにプリインストールのcsc.exeでコンパイルした場合はVSのライセンスっていらないのかな?
スレチだけど
2019/06/03(月) 19:43:46.22ID:kNKAj5df
質問の仕方が悪かったですね
すみません

テキストエディタでpowershellのコードを書き、その中で.NETのFormオブジェクト達を呼び出してGUIを作ります
そのときに、powershellや.NETの商用ライセンス的なものが必要なのか知りたかったです

よろしくお願いします
2019/06/03(月) 19:52:03.41ID:dutM1mQ+
まさかの第三
・(実行環境の)商用ライセンス
だった
2019/06/03(月) 21:22:12.30ID:51hU7+bN
しかもWPFですらない可能性も出てきた
2019/06/03(月) 22:12:25.81ID:D/nGT1NT
OSSなんだしいらないんじゃね?(適当)
社内用ならそんなシビアに調査しなくていいんじゃね?って気もするけど超大手とかだとやっぱしっかりしらべるのかね?
超大手なら周りなり法務なりに聞けで済むか
2019/06/03(月) 22:30:23.86ID:/fVOuCWc
>>163
小規模企業でも大企業からの委託案件だとNG
2019/06/04(火) 07:11:16.82ID:vCNf4oK2
>>170
「自社利用」な
2019/06/04(火) 11:36:40.38ID:K/ci/E6x
http://cointoss.hatenablog.com/entry/2017/02/21/121209
上を参考にexeにdllをマージしたのですが
Prism.dll、Prism.Unity.Wpf.dll、Prism.Wpf.dllは
exeのフォルダに置いていないと起動できません。
他のdllは削除しても起動できます。

なにか不足していることがあるのでしょうか?
173デフォルトの名無しさん
垢版 |
2019/06/06(木) 03:11:15.75ID:Q2PRQ2hH
>>166
不要
2019/06/12(水) 06:39:45.37ID:6mE/3wpu
WPF技術者探しても一人も見つからないあるよ。保守できないあるよ。
2019/06/12(水) 08:15:06.43ID:1sqooHn/
お前がメンテナになるんだよ
2019/06/12(水) 08:57:44.10ID:gBdzPl5F
金出しゃいくらでも居るよ
技術者を安いおちんぎんでこき使わないで
2019/06/12(水) 17:09:04.38ID:lPa5yFg1
技術者不足なのか足りてるのか分からん業界だ
2019/06/13(木) 20:13:48.97ID:Qp/i0hmX
core3いいじゃん
これで少し手直ししたらlinuxにwpfもっていけるってことなのかい
2019/06/13(木) 20:59:16.46ID:vbUZdfMk
残念ながらWPFやWinFormsは.NET CoreでありながらWin限定
WPFは大部分がC++/CLIで書かれているしWindows APIに依存しまくってるから、
まずはそれを全てポータブルな形に再実装しなければならない
百人月クラスの壮大なプロジェクトだ
2019/06/13(木) 21:15:12.81ID:sfQNEli4
100人月で済むならやりゃいいじゃん
壮大なプロジェクトって少なくとも1桁違うやろ
2019/06/13(木) 21:31:32.83ID:RglcOoNZ
>>180
一桁はおろか、二桁=1万人月くらいは必要じゃないかな…
2019/06/13(木) 21:32:10.18ID:09qLCJE0
MS社員の100人月ならドカタのサグラダファミリアだな
2019/06/13(木) 21:41:06.34ID:Br82W2pC
そもそもポータブルなGUIに無理がある
swingの様になりたいのか
2019/06/13(木) 22:01:08.10ID:k5DFsQwe
C++/CLIって久しぶりに聞きましたね
もう聞くことはないと思ってた
2019/06/13(木) 23:20:07.43ID:sfQNEli4
そもそもWPFなんだからWindows限定でよくね?
2019/06/13(木) 23:25:38.96ID:CND6SLBs
WPFはフルスクラッチでUIを描画してるから、アーキテクチャ的にはむしろWin限定にするほうが不自然
2019/06/14(金) 21:47:31.30ID:nRSl3ZvU
>>179
そうなん…
Win専用ならCoreにしても…

C++/CLIはたまに使う
2019/06/15(土) 09:19:09.60ID:Ga3aXpPN
Chromium+AspNetCore+Blazor
次世代の.NET系デスクトップフレームワークはこうなる
2019/06/15(土) 09:27:21.19ID:6PSH/Imj
過剰なクライアントサイド志向に対する最近の揺り戻しのムードの中で、サーバーサイドBlazorだけならワンチャンあったかもね
Blazorを正式なプロダクトとして推していくと決めた時点で、クライアントBlazorは廃止してサーバーサイド一本にするべきだった
Blazorといえばwasmのオモチャというイメージを払拭できない限り普及はない
2019/06/15(土) 09:42:50.74ID:Ga3aXpPN
SSRはもとはクライアントでしか動かないjsが鯖で動くすごいって技術
だからjs以外の言語だとSSRはなにも真新しさはない古典的な技術だ
なのでBlazorでサーバーサイドをやる意味はない(api、MVC、Pagesで十分)
クライアントで.NETを動かすことに意味がある
2019/06/15(土) 09:49:12.97ID:p9QrGiGS
Blectron的なやつのことを言いたい?
2019/06/15(土) 10:13:25.41ID:Ga3aXpPN
>>191
Blectronは知らないがElectronの.NET版という意味ならまさにそうだな
ググったらもうすでに同じ発想で取り組んでるOSSユーザーが少なからず居たから
もう暫くしたらBlazorでクロスプラットフォームデスクトップアプリが実用化するんじゃないかな
2019/06/15(土) 10:33:45.61ID:p9QrGiGS
>>192
Blectlonでググったかい?
194デフォルトの名無しさん
垢版 |
2019/06/15(土) 15:17:17.19ID:xT5QU/B2
新卒で入った会社(5年前)がWinFormだったな。今も多分そう。
今はWindows用のコード書くことがなくなってしまったが、
あれはあれで生産性高いと思うわ。業務アプリだとデザイン性いらないし
2019/06/15(土) 15:30:24.49ID:RNWBuCRz
WPFも主ターゲットは業務向けだけど、日本のITドカタが業務システムと聞いてイメージするオーダーメイドなシステムとはだいぶ違う
米国では早くからシステムのパッケージ化が進んでいて、
パッケージベンダーにとっては一つ作れば多くの客に売れるから多くの開発リソースを投資してリッチなUIを作ることができる
そういう事情を踏まえて誕生したのがWPFなんだよ
日本でも近年は脱オーダーメイドが進みつつあるけど、既にリッチクライアントの時代が終わってSaaSになっちゃったからWPFの出番は来なかった
2019/06/15(土) 16:35:30.94ID:hWID9DJj
日本の業務アプリには御託並べるWPFプログラマは不要。
黙々と作業に徹するWinformコーダーが居ればよい。
2019/06/15(土) 17:08:33.15ID:RjknjEo7
業務にアクティブ要素、動的要素なんていらないからな。
コントロール全部並べてあって使えないところは無効化されてるだけでいい。
状況によって位置が変わるのをすげー嫌がる。操作ミスが増えるだけ。
198デフォルトの名無しさん
垢版 |
2019/06/16(日) 01:46:25.54ID:AXRRwyW/
バインドしてみたけど、まったくメリットが分からん...

http://marikooota.hatenablog.com/entry/2017/05/30/002059
とか、↓の方が簡単だと思う。

-- xsml --
<StackPanel>
<TextBox x:Name="tb1"/>
<Button Click="btn_Click">Count Up!</Button>
</StackPanel>

-- cs --
int count = 0;
private void btn_Click(object sender, RoutedEventArgs e)
{
count++;
tb1.Text = count.ToString();
}

誰か、バインドのメリットをアホな俺に教えて下さい...
199デフォルトの名無しさん
垢版 |
2019/06/16(日) 01:47:53.07ID:AXRRwyW/
>>198
空白文字消されるんですね; 読みにくくてすみません💦
2019/06/16(日) 03:49:25.26ID:3DdY3936
バインドの最大なデメリットは天才と無職しか使いこなせないこと。
2019/06/16(日) 09:03:33.98ID:muf2QdNo
>>198
あなたの作りたいツールがボタン押したら
カウントアップするだけの機能だけでよいなら理解する必要はない

でもたいていはそのテキストボックスには外部ファイルを読み取ったり、
データベースからデータをとってきて、集計したり加工した値が入るはずだ
その時にはbtn_clickのコードは肥大化して容易に1,000行を超える
その時には関数に切り分けたりすることを覚えるだろう
さらに進んでいくと、画面を凝ったデザインにしたくなったりユーザーの入力値を検証したくなったりする
そうすると画面のデザインを少し変えただけなのに
うまく動かなくなったりコンパイルエラーを起こすようになってきた
そこで画面は画面だけにしたほうが改修がしやすかったり、
デザインの得意な人にそれを任せることができるようになってくる
システムは機能や役割ごとに適切に分離していたほうが将来的にメリットがあり、
バインディングはそれを実現する仕組みの一つだ
2019/06/16(日) 10:07:34.99ID:X9An2SCt
三行で
2019/06/16(日) 10:11:25.65ID:X9An2SCt
バインディングは逆に手順が可視化されないのが弱点

よくわからないけど動いていればいいならバインディング
そこまでしっかり自分で制御したいなら通常のコードで
2019/06/16(日) 10:14:27.54ID:yX0oMZwq
手順の管理は量が増えると難しくなってスケールしないから
そもそも手順気にしなくていいように宣言的プログラミングしようぜってなったんだよ
ちっぽけなアプリ作るだけなら好きにすればいいさ
2019/06/16(日) 10:14:39.65ID:9Kn5GUQ/
ドヤ顔したいならバインディング
2019/06/16(日) 10:22:58.12ID:X9An2SCt
バインディングにも弱点がある
相互関係で値が決まるときにその相互関係を結局人間が追わなくてはならない場合が出てくる
その時に非常にバグが取りにくい
それでFBはMVVMを捨てた
2019/06/16(日) 10:24:41.66ID:X9An2SCt
スケールと言うけど小規模ならバインディングで対応可能だろうけど
それを超えるとまあ無理だろう
2019/06/16(日) 10:30:24.72ID:yX0oMZwq
手続き的だと非同期処理も非常に弱い
今の時代非同期が無いということはまずない
非同期処理ではやはり宣言的プログラミングが強い
手順すなわち処理の順番に依存すると非同期処理は急激に難しくなる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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