トップページtech
1001コメント271KB

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part16

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/05/30(木) 20:12:06.20
ユーザーインターフェースシステム、Windows Presentation Frameworkについて微に入り語るスレ。

Visual Studio 2012 & 2010
http://www.microsoft.com/visualstudio/jpn/downloads
Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&;displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&;displaylang=ja
Microsoft .NET Framework 4.5
http://msdn.microsoft.com/ja-jp/library/vstudio/5a4x27ek.aspx

前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part15
http://toro.2ch.net/test/read.cgi/tech/1359863558/

関連スレ
Microsoft Silverlight その9
http://toro.2ch.net/test/read.cgi/tech/1321150267/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0478デフォルトの名無しさん2013/09/08(日) 13:49:29.58
多分、こういうのはもう流行らない
0479デフォルトの名無しさん2013/09/08(日) 14:05:17.27
>>477
http://archive.msdn.microsoft.com/wpfsamples
Control Customizationのサンプルを見るんだ。
0480デフォルトの名無しさん2013/09/08(日) 14:17:41.93
7とかの平べったいボタンは個人的にはあまりすきじゃないんだよね
0481デフォルトの名無しさん2013/09/08(日) 14:20:47.99
それを言うなら、8のボタンではないか?
0482デフォルトの名無しさん2013/09/08(日) 14:20:57.73
microsoftの人も仕事がなくなってきてるんだろう
メーカー製PCのバンドルソフトと同じ匂い
0483デフォルトの名無しさん2013/09/08(日) 20:04:47.30
流行りかどうか知らないけど
そういうボタンは画像用意しておいて背景に設定するんだよ
0484デフォルトの名無しさん2013/09/08(日) 20:07:45.64
web2.0デザインとでも呼べばいいんだろうか
そういった背景の画像はweb上のジェネレータが探せば結構ある
0485デフォルトの名無しさん2013/09/08(日) 20:36:16.41
どう考えても画像じゃなくてグラデーションブラシを使ってるだけだと思うw
0486デフォルトの名無しさん2013/09/08(日) 20:43:28.30
簡単なのは幅1ピクセルの画像をループして貼ってる
ハイライト入れるのに画像使ったりしてる
0487デフォルトの名無しさん2013/09/08(日) 23:34:52.82
画像よりXAMLで書いたほうが、色変えたくなったりした時に対応しやすいからいいよね
0488デフォルトの名無しさん2013/09/09(月) 15:44:14.00
サイズの大きいビットマップファイルをキャンバスにAddすると、
キャンバスをはみだして表示されてしまうんですが、
はみだしてる部分は表示しないようにするにはどうしたらいいですか
0489デフォルトの名無しさん2013/09/09(月) 15:50:58.81
できましたありがとうございました。
0490デフォルトの名無しさん2013/09/09(月) 16:20:07.04
>>489
自己解決したんでもナニシタカカケヨw
0491デフォルトの名無しさん2013/09/09(月) 20:41:06.55
複雑なデータテンプレート作って、それの色違いのスタイルがほしい場合って同じ複雑なデータテンプレートを書かなきゃいけないのでしょうか?再利用とかできませんか?
0492デフォルトの名無しさん2013/09/09(月) 23:10:35.40
>>491
俺もデータテンプレートの使う場所での微妙なカスタマイズ方が知りたい(´・ω・`)
0493デフォルトの名無しさん2013/09/09(月) 23:18:21.59
テンプレート内で変えたい部分の値をリソース参照にして
使用する箇所のコントロールのリソースの値を変えたりとか。
04944932013/09/09(月) 23:21:54.42
ListBoxの選択スタイルなんかがリソース参照になってるので
そういうカスタマイズが出来るようになってる。
0495デフォルトの名無しさん2013/09/09(月) 23:35:47.66
どういうこと?
0496デフォルトの名無しさん2013/09/10(火) 00:06:13.14
>>491
BasedOnでオーバーライドとかそういうレベルの話ではないのかな
0497デフォルトの名無しさん2013/09/10(火) 00:09:59.46
BasedOnとかそんなのあったなぁ
0498デフォルトの名無しさん2013/09/10(火) 00:15:34.49
>>496
テンプレートもBaseOnってあるんだっけ?
0499デフォルトの名無しさん2013/09/10(火) 00:49:09.88
ないよねw

DataContextに持たせるか、TemplateBindingで出来る範囲で諦めるか、
あとはUserControlを使うか...
0500デフォルトの名無しさん2013/09/10(火) 08:10:48.27
>>491
単にDataTemplateの中なら、
色をConverterかましてBindingすりゃ済む話じゃないの?
もうちょい複雑にUserControlの中の部品(Buttonとか)の色を
外から変えたいとかなら、DependencyProperty作って
それで中継させれば外からBindingしたりもできる
0501デフォルトの名無しさん2013/09/10(火) 09:44:26.39
>>500
ストアアプリの用語ですまんが同じPageの中でListViewとGridViewをVisualStateで切り替えるとして各々の中で同じテンプレートを色違いで使うとする。
そした場合ってのはConverterをStaticResourceにしてStateChangeか何かでConverterのパラメタを書き換えたりするん?

いや、プロパティの継承とかで各々のスコープで色違いになるようConverterを定義しとくのか?
0502デフォルトの名無しさん2013/09/10(火) 09:58:25.48
canvas.AddするだけでInvalidateもOnPaintも考えずに画像が表示されるって素敵ですね
0503デフォルトの名無しさん2013/09/10(火) 21:46:16.55
GridSplitterで変更した高さを元に戻すにはどうしたらいいでしょうか
0504デフォルトの名無しさん2013/09/10(火) 22:00:46.87
>>503
GridのRowDefinitionや中の人のHeightを弄ると治る
何を弄るのかは作りによるから実験してね
0505デフォルトの名無しさん2013/09/10(火) 22:03:56.81
>>504
そのあたりは結構いじってみてるのですがどうにも思ったように挙動してくれませんでした
いろいろ試してみようと思います
ありがとうございました
0506デフォルトの名無しさん2013/09/10(火) 22:14:49.57
listviewにdisplayindexがつくのはいつ頃になりますか?
0507デフォルトの名無しさん2013/09/11(水) 00:40:22.86
ないでしょ
MSはGUI技術の開発リソースをほぼHTMLに絞ってて、もうWPFは弄る気ないみたい
ストアアプリもいずれHTML一本になるだろうね
0508デフォルトの名無しさん2013/09/11(水) 00:42:29.62
オワコンってこと?
0509デフォルトの名無しさん2013/09/11(水) 00:59:40.75
どうでもいい話だけど、WritableBitmapじゃなくてWriteableBitmapなんだねw
まさかのスペルミスかと思ったらイギリス英語らしい。
こんなの米語で統一して欲しいよな。
0510デフォルトの名無しさん2013/09/11(水) 01:16:41.43
なんでイギリス英語だとだめなの?
0511デフォルトの名無しさん2013/09/11(水) 01:48:58.23
いや命名規則に機械的に従ったらそうなるだけだろ
余計な例外を嫌うのは共通のセンスでしょ
ICloneableもそう
0512デフォルトの名無しさん2013/09/11(水) 04:22:21.99
>>507
いやーそれはないんじゃないか。
というか勘弁してくれ…
0513デフォルトの名無しさん2013/09/11(水) 09:11:53.51
WPFはToolkitすら放置されてるもんな
あそこまで作っといて本家に取り入れられないものだらけ
もう開発はしないのかもしれない
0514でちゅ2013/09/11(水) 09:42:13.09
WPFの個人的メモ

MediaElementのSourceに動画とか音楽ファイル突っ込んで
Play()してMediaOpenedまたはMediaFailedイベントを待たずに
MediaElement.Close()を呼ぶとハンドルがリークしてファイルがロックされたままになる。

と……
0515デフォルトの名無しさん2013/09/11(水) 14:37:06.34
バグじゃん
0516デフォルトの名無しさん2013/09/11(水) 15:38:07.72
this.mediaElement1.Source = new Uri( @"C:\hogehoge.mp3" );
this.mediaElement1.Play();
this.mediaElement1.Source = null;
this.mediaElement1.Close();

これで再現するなw
Source = null; はなくても同じ
0517デフォルトの名無しさん2013/09/11(水) 16:43:12.68
そんなコーディングするなよ
0518デフォルトの名無しさん2013/09/11(水) 17:46:53.18
もちろん普通はこんなコードは書かないが
ユーザーが再生ボタン連打みたいな状況はありえるかな
0519デフォルトの名無しさん2013/09/11(水) 19:08:03.31
>>518
それは中でステート管理して処理すべきだろw
0520でちゅ2013/09/11(水) 21:14:06.16
まあ何にせよMediaElementには罠が多すぎの感が
0521デフォルトの名無しさん2013/09/11(水) 22:42:50.45
Effectのグロウってなくなったの?
0522デフォルトの名無しさん2013/09/11(水) 23:13:39.52
GlowEffectやDropShadowEffectで代用
最悪ピクセルシェーダを書けばなんでもできる
0523デフォルトの名無しさん2013/09/11(水) 23:15:42.70
訂正
BlurEffect
0524デフォルトの名無しさん2013/09/12(木) 02:57:09.33
蒸し返してすまんが>>501のような同じテンプレートを違う場所でパラメータを変えて使いたいような場合はどげんしたらよかと?
0525デフォルトの名無しさん2013/09/12(木) 04:16:51.72
WindowsFormsHostにFormsのカスタムコントロールおいたら、フォーカスの挙動がちょっとおかしい。
CanFocusがfalseのままだぁ!!どうすりゃいいのさ。。。
0526デフォルトの名無しさん2013/09/13(金) 20:40:03.62
CollectionViewSourceでXAMLでSortDiscriptionを定義した時はちゃんとソートされるんだけど、なぜかcsファイルに書いたらソートされない
0527デフォルトの名無しさん2013/09/14(土) 15:12:36.40
TextBoxのHeightをAutoにしてAcceptsReturnをTrueにすると改行入力するたびにTextBoxの高さがどんどん増えていくけどこれやめるにはどうすればいいでしょうか?
TextBoxのHeightを固定値にすれば改行入力しても高さ増えないですが、初回は高さをAutoの状態で表示させたいのです
0528デフォルトの名無しさん2013/09/14(土) 15:32:56.59
>>527
あんたが決めない仕様をWPFに丸投げしてよきにはからえ、なんて言っても無理。
何考えてるんだろう
0529デフォルトの名無しさん2013/09/14(土) 16:22:46.85
>>526
CollectionViewSource vs; だとすると、ItemsSourceにバインドするのは{Binding vs.View}となるんだが、そこは合っている?
0530デフォルトの名無しさん2013/09/16(月) 23:18:20.15
>>527
適当なタイミングでActualHeightの値をHeightに入れとけば?
0531デフォルトの名無しさん2013/09/17(火) 01:33:03.62
>>527
テストしていないけどMaxHeightで解決しないのかな?
0532デフォルトの名無しさん2013/09/17(火) 03:00:51.71
>>527
要は最初はそのテキストを全部表示するに足る高さにしたいってこと?
最初Autoでその計算された値で固定値にすれば?
0533デフォルトの名無しさん2013/09/20(金) 21:46:44.68
アンドロイドみたいなトーストポップアップってどうやって実装してる?
0534デフォルトの名無しさん2013/09/25(水) 07:59:16.97
>>533
「ウンコした後お尻はどうやって拭いてる?」と同じ質問だな。
0535デフォルトの名無しさん2013/09/25(水) 08:26:45.80
>>534
ウンコ拭いてからレスしてください
0536デフォルトの名無しさん2013/09/25(水) 13:28:09.53
HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM

AlwaysHibernateThumbnails
ColorizationAfterglow
ColorizationAfterglowBalance
ColorizationBlurBalance
ColorizationColor
ColorizationColorBalance
ColorizationGlassAttribute
ColorizationGlassReflectionIntensity
ColorizationOpaqueBlend
Composition
EnableAeroPeek
EnableWindowColorization


これらの値を変更して再起動することで色々設定できるみたいだね
0537デフォルトの名無しさん2013/09/28(土) 02:31:12.25
WindowsFormHostの上にWPFのコントロールを表示したいんですが、無理ですか?
0538デフォルトの名無しさん2013/09/28(土) 08:46:19.42
ElementHost
0539デフォルトの名無しさん2013/09/28(土) 10:55:47.16
>>537
OSが対応するまで不可能
0540デフォルトの名無しさん2013/09/28(土) 17:08:00.24
CanvasにImageを追加して、
Canvas.EffectにShaderEffectから派生したクラスを設定してるんだけど、
ImageのサイズがCanvasより大きい場合に、Canvasからはみ出てる部分にも
エフェクトを掛けようとしているのかとても重くなる。

重くなるのを回避する方法はないだろうか?
0541デフォルトの名無しさん2013/09/28(土) 19:50:36.09
自分でシェーダ書いてるんだったら範囲をシェーダのパラメータとして直接指定すればいいでしょ
0542デフォルトの名無しさん2013/09/28(土) 19:54:28.99
Borderの中にでも入れといてBorderにエフェクトを指定してみるとか
0543デフォルトの名無しさん2013/09/28(土) 20:54:16.43
>>541
範囲指定しても変わらなかったよ。

>>542
うまく行ったよ!

お二人ともありがとう。
0544デフォルトの名無しさん2013/10/01(火) 18:31:19.49
2010なんだけど、フォームにしないと常駐も作れないぞ。

2012は少しはマシ?
0545デフォルトの名無しさん2013/10/01(火) 19:31:46.41
そもそもの認識がおかしい
WPFはWinFormsと併用するもの
0546デフォルトの名無しさん2013/10/01(火) 20:02:53.50
初心者は使うなと言いたいんだな?

拡張にあるけどインストール方法も分からん。
0547デフォルトの名無しさん2013/10/01(火) 20:04:58.37
WPFはCOMコンポーネントを直接乗っけられないのか?
winformsかまさないとダメ?
0548デフォルトの名無しさん2013/10/01(火) 20:09:44.47
WindowsFormsHostをかまさないとダメ
どう実装しようがWPFの上にWinネイティブのウィンドウを重ねるというクソみたいな形にしかならないんで
WinFormsを併用することによって失うものは特にない
0549デフォルトの名無しさん2013/10/01(火) 20:14:13.86
WPFのセールスポイントはGUIコーティングの言語横断性にあるんだろ?
FORMと共用したら意味ないんじゃないのか?
0550デフォルトの名無しさん2013/10/01(火) 20:21:43.73
WPFのセールスポイントは高い柔軟性と表現力だろ
GUIを箱庭内でフルスクラッチで再構築してるからOSの制約を受けない
コントロールのウィンドウハンドルが必要になるようなことをやろうとする時点でその前提が崩れてるんだよ
0551デフォルトの名無しさん2013/10/01(火) 20:36:23.94
フォルダ選択ダイアログを使いたい俺はユーザー失格ですね分かりましたよ。
0552デフォルトの名無しさん2013/10/01(火) 20:56:16.42
だからWinFormsを併用しろって言ってるでしょ
フォルダ選択ダイアログはWPFのウィンドウじゃなくてWindowsネイティブだろ?
だからWindowsネイティブのGUIのラッパーであるWinFormsを使う。何かおかしいか?
WPF内でやりたいというなら自作しろよ
0553デフォルトの名無しさん2013/10/01(火) 21:02:56.00
初心者は使うなということですね?

分かってますよ?
0554デフォルトの名無しさん2013/10/01(火) 21:22:18.64
ゼロから始める入門を手本にコントロールがウィンドウ一枚に
百以上あるのを2カ月で五千行ばかり書いたのに…。
0555デフォルトの名無しさん2013/10/01(火) 21:45:36.38
モバイルブームに人取られちまって開発進まないと見た。
0556デフォルトの名無しさん2013/10/02(水) 01:01:42.88
マウスやキーのイベントを一切受け取らない半透明のBorderがほしいんだけどどう書いたらいいの?
0557デフォルトの名無しさん2013/10/02(水) 01:05:59.63
IsHitTestVisible="false" Opacity="0.5"
0558デフォルトの名無しさん2013/10/02(水) 01:12:00.49
>>557
素早い回答さんくす!
0559デフォルトの名無しさん2013/10/02(水) 11:37:57.31
グリッド使うとコントロール配置がウィンドウに合わせてゴム
みたいに伸び縮みして面白いんだけどな。

使い勝手がもうちょっと良けりゃ。
0560デフォルトの名無しさん2013/10/02(水) 19:11:36.18
人気出なかったのはドカタが業務フォームを大量生産するのに向いてないからだよな
MVVMはそういうのに向いた手法だけどそれはそれでドカタには難しすぎる
一画面を作り込むタイプのアプリにはいいんだけどその手のアプリは数が多くないし金にならない
0561デフォルトの名無しさん2013/10/02(水) 20:42:30.60
本質的に難しいかはともかく、土方向けのとっつきやすい情報が皆無なのはたしか。
0562デフォルトの名無しさん2013/10/02(水) 21:00:26.80
Winformって業務アプリでよく使われるけど、業務アプリって似たような画面がいっぱいあるんだよね
表示する情報が違うとかそういうレベルで
しかもデータ量が大量だから、それがWPFに合わないっていうのが大きいよな
ビューとモデルが一対一だから、MVVMの恩恵も受けないし
0563デフォルトの名無しさん2013/10/02(水) 21:28:33.67
将来性への不安が使われない理由の大きな原因だと思うが

Silverlightの開発チームが何の前触れもなく解散したのにはビビったわ
こりゃWPFもそろそろかって思う人が出ても不思議ではないはず
0564デフォルトの名無しさん2013/10/02(水) 22:04:42.54
SilverlightはWebの選択肢が他にいっぱいあったからじゃね?
0565デフォルトの名無しさん2013/10/02(水) 23:08:25.14
MVVMの御題目は良かったのかもしれない

ただ実装がひどすぎた
無理やり作りました的なフレームワーク
staticメンバー羅列ってみるだけでゲロ吐きそう
0566デフォルトの名無しさん2013/10/02(水) 23:42:09.27
Prismとかの補助ライブラリも無しにMVVMやろうとするからそうなる
理念通りのMVVMにはライブラリ使うか、自分でWPFの上に乗っける
フレームワークをフルスクラッチするしか道はない
とりあえずPrismでも使っておけ

>>562
むしろWPFの得意領域じゃねえのそれ
0567デフォルトの名無しさん2013/10/02(水) 23:55:14.39
WPFだけでもややこしいのにさらにそんな妙なライブラリの使い方まで覚えなきゃならんのかw
0568デフォルトの名無しさん2013/10/03(木) 00:15:25.72
WPF標準の書き方覚える方が面倒だろうというマジレス
0569デフォルトの名無しさん2013/10/03(木) 00:21:44.23
標準の作り方が知らないでPrismが使えるかよw
あれはソース見て自前で作るためのサンプルだ
0570デフォルトの名無しさん2013/10/03(木) 00:31:45.55
>>545
モダンの方だがBindableBaseだけでそんなさして困って無いんだが。
まぁコードビハインド適度にあるけど別にそんぐらい構わなくね?
0571デフォルトの名無しさん2013/10/03(木) 00:33:58.30
>>569
それは言い過ぎだわ…
DelegateCommandだけでも存在意義ある
ガリガリ実務で使うかといえばアレだが、普通に使っても困らん
複合アプリケーション云々は無視して問題ない
せめてPrismとInteractivity.dll無いとスタートラインに立てん
livetとかでもいいが
0572デフォルトの名無しさん2013/10/03(木) 00:35:51.08
その段階を越えると意外とそういうの必要ないことに気付いてきて
素のWPFが非常によくできていることが分かってくるよ
0573デフォルトの名無しさん2013/10/03(木) 00:52:23.36
Behaviorとか使わない人はコードビハインドで頑張ってるのか

とかいう俺もbehaviorのOnDetachingがコードビハインドで明示的に削除を
書かないと働かないことを知ってからは若干嫌厭気味だが……
0574デフォルトの名無しさん2013/10/03(木) 01:02:12.30
そのBehaviorにもBlendでポトペタする奴とVSで書ける奴とあってもう訳がわからんw
0575デフォルトの名無しさん2013/10/03(木) 01:08:28.01
素のWPFは少なくともそこらへんの「ぼくがかんがえたさいきょうのWPF」よりは遥かに優れた仕組みを持ってる
そこを正しく理解するのがまずは先
0576デフォルトの名無しさん2013/10/03(木) 01:43:32.16
使うのに深い理解が必要だと滅びやすいので、とりあえず、でもちゃんとマトモに作れる環境が必要
0577デフォルトの名無しさん2013/10/03(木) 08:30:10.31
もっと俺にもわかるように話せよ
■ このスレッドは過去ログ倉庫に格納されています