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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/08/22(日) 21:11:53
一向に普及しないユーザーインターフェースシステム
Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。

Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/
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 Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/

過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0751デフォルトの名無しさん2010/11/23(火) 23:54:18
>>749
Evernoteクライアントのversion 3をダウンロードして動かしてみれ。
0752デフォルトの名無しさん2010/11/24(水) 01:33:55
>>750
やっぱりそんな感じよね
WPF自体経験ないからうんうん唸る

>>751
あれは重かった…
0753デフォルトの名無しさん2010/11/24(水) 01:39:32
だいたい、ビューが階層的ならビューモデルも階層にすればOK。
0754デフォルトの名無しさん2010/11/24(水) 01:57:42
MVVMでオプション設定ダイアログを作りたい
オプション設定のVは作ったのだけど、この後どのようすればいいですか?
Vの起動方法とVの設定値の取得方法が想像つかないんですが
0755デフォルトの名無しさん2010/11/24(水) 02:01:15
>>754
従来のタブ切り替えみたいな方式じゃなくて、
XAMLらしくリンクとして実装してあげるといいだろうね。
0756デフォルトの名無しさん2010/11/24(水) 03:01:47
データバインディング

TextBox.Textと普通のプロパティをバインdする方法はわかったんだが
インデクサはどうやればいい?

たとえばLabeの文字を
str[i]とバインドして

str[0]="A";
str[1]="B";
str[2]="C";

i=0になった瞬間LabelがAになって
i=1になった瞬間B、i=2の瞬間C

みたいな感じ。
ValueCangeイベントのようなイベントで処理したり
なんとかタイマーで、0,01秒ごとにLabelのContentを変える
みたいな処理しかわからない
0757デフォルトの名無しさん2010/11/24(水) 03:06:10
string hoge
{
get{return str[i];}
}
をバインドする

iのsetterでhogeのpropertyChangedをおこす
0758デフォルトの名無しさん2010/11/24(水) 03:53:39
>>756
そもそも i の変更に合わせてっての自体やらない。

i の変化自体、たぶん、ListBox の SelectedIndex とかの変化と連動してる場合が多いから、
i を介さず、直接 SelectedItem をデータバインディングしてしまう方が早い。

↓コレクション走査パスの指定ってのもできるし。
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_05/introwpf_05_02.html
0759デフォルトの名無しさん2010/11/24(水) 10:53:38
以下のxaml上のEventSetterをコードで書きたいのだが、書き方がわからない・・・

<Style TargetType="{x:Type ComboBox}">
<EventSetter Event="SelectionChanged"
Handler="SampleList_SelectionChanged" />
</Style>

動的にイベント有無を変更したいので、コードで書きたいのですが。
0760デフォルトの名無しさん2010/11/24(水) 19:45:24
そのまま書くだけだと思うけど
ルーティングイベントだけは〜〜Eventって名前の静的フィールド
0761デフォルトの名無しさん2010/11/25(木) 01:55:11
WPFいいなぁ
そろってるコントロールやパネルとかが優秀すぎて
XAML使ってもいいけど
仮に全部C#コードで書いたとしても別に問題にならない
0762デフォルトの名無しさん2010/11/25(木) 01:58:04
でもXAMLを知ればC#でなんでもやろうとは思わなくなるよ。
0763デフォルトの名無しさん2010/11/25(木) 02:05:10
XAMLって
プログラムの外観とロジックを分離させるために作った
みたいに書いてるけど
俺みたいな外観もロジックも一人で造らなきゃならないぼっちにとっても
勉強したほうがお得なの?
0764デフォルトの名無しさん2010/11/25(木) 02:11:53
>>763
というより、使わなきゃUIデザイナーの支援を受けられないんだから、嫌でも使うことになる。
0765デフォルトの名無しさん2010/11/25(木) 05:03:31
>>763
外観とロジックを分離することとぼっちは関係ないよ
0766デフォルトの名無しさん2010/11/25(木) 05:54:52
>763
宣言的にオブジェクトを配置するXAMLと、
手続処理を中心としたプログラムコード。
普通の静的なUIデザインには、前者の方が向いてるよね。
0767デフォルトの名無しさん2010/11/25(木) 06:01:04
WPFはまあ乱暴な言い方すればWinFormにブラウザコントロール貼り付けて
ローカルでhtml+css+javascript流し込んで実行してるような感じかな・・・

WinFormで凝ったGUIやると面倒だな〜->ブラウザコントロールが結構使えるなあ->WPFでいいじゃん
みたいな感じ

まー必要ない人には必要ないかもしれない
0768デフォルトの名無しさん2010/11/25(木) 06:07:55
>767
それはUIデザインのコーディングスタイルだけの話じゃないか?
WPFは強力なバインディング機構の方がキモだろ。
0769デフォルトの名無しさん2010/11/25(木) 06:52:41
xml自体がバインディング向けですしね
0770デフォルトの名無しさん2010/11/25(木) 07:23:37
でも、WPFは糞重いし、小規模なツール作るには手間がかかるだけ
UIデザイナー?そんな形態持ってる企業なんてない
0771デフォルトの名無しさん2010/11/25(木) 08:39:44
WPFが重いのはきっとMSがなんとかしてくれるよ。

きっと
0772デフォルトの名無しさん2010/11/25(木) 09:43:23
まだWPF重いのかよwww
0773デフォルトの名無しさん2010/11/25(木) 10:26:05
Boldフォント使うとすぐに字がにじむんだけど、どういうこと?
0774デフォルトの名無しさん2010/11/25(木) 13:55:39
WPFだとWndProcつかえんの?
0775デフォルトの名無しさん2010/11/25(木) 13:57:49
使える
0776デフォルトの名無しさん2010/11/25(木) 13:59:46
ふーん
0777デフォルトの名無しさん2010/11/25(木) 14:33:56
>>770
まだ小規模なツールでWinFormsより手間がかかると思ってる人居るんだ。
使ってから騒ぐ分だけコテハンのアイツの方がよっぽどマシだな。
0778デフォルトの名無しさん2010/11/25(木) 14:48:20
「オシャレなUIならWPF」とか言ってる奴もいるぞw
0779デフォルトの名無しさん2010/11/25(木) 14:51:07
いるいるw
0780デフォルトの名無しさん2010/11/25(木) 15:05:56
お前ら頭良すぎだな

お前らの脳味噌を俺の脳味噌にデータバインドしてくれよ
0781デフォルトの名無しさん2010/11/25(木) 15:19:00
それじゃちょっとこの音楽聴いといてくれるか
一万人分ぐらいの脳と繋がるから
0782デフォルトの名無しさん2010/11/25(木) 15:21:39
WPFでカスタムコントロール(Canvas継承)を作って、
Canvas上のControlに拡張プロパティを設定したいのだけどうまくいかない。

C#のIExtenderProviderにあたるWPFの機能ってなんでしょ?
DependencyPropertyでごちゃごちゃとやらないといけない?
07837822010/11/25(木) 18:31:49
AttachedPropertyBrowsableForChildren()で解決しました。
0784デフォルトの名無しさん2010/11/26(金) 03:10:23
グラフィックを半透明にしたり、画像の拡大縮小がきれいだったり

ゲームや簡易ペイントソフト作成用ですか
0785デフォルトの名無しさん2010/11/26(金) 04:07:37
XAMLのほうでは直接Width="100"みたいな定数しかできなくて
たとえばButton Width=button1.Height+30
みたいな足し算や掛け算を行ったりできないの?
こういうことしたかったらC#のコードでやらないと無理?
0786デフォルトの名無しさん2010/11/26(金) 04:28:26
まずやりたいことが、Gridなどのコンテナで実現できるか考えよう。
それでも無理ならバインドしてコンバーターで計算させるとかじゃね?
0787デフォルトの名無しさん2010/11/26(金) 09:01:28
キャンバスをEXCELのように多数のセルに分けて、それぞれ文字を入力させる。
で、フォームがリサイズされたらセルの大きさもその割合に応じて変わる。

こんなプログラムはWindows Formのほうがいいのかな?
0788デフォルトの名無しさん2010/11/26(金) 09:47:33
>>784
グラフィックきれい = ゲーム って発想やめようよ。
いわゆる可視化、見える化とかが有効とされるものならなんにでも応用効く。

>>785
コンバーター書いて Binding するか、
データコンテキストに渡した ViewModel 内で +30 するか。
どっちにしろ C# コード書くね。

>>787
リサイズへの追従とかそれこそ WPF 向きじゃない。
0789デフォルトの名無しさん2010/11/26(金) 09:52:22
ファイルのドラッグ&ドロップ部分を書こうとしているとこなんだけど
MVVMの場合イベントはすべてDeleteCommandを通して書くの?
0790デフォルトの名無しさん2010/11/26(金) 10:02:04
MVVMは質問してまでやることじゃない。
自分が無理なくやれる方法でやることが重要。
0791デフォルトの名無しさん2010/11/26(金) 10:16:04
ドラッグ&ドロップみたいなビュー内で完結してるものは
むしろビヘイビアで書く方がいいよ。
0792デフォルトの名無しさん2010/11/26(金) 10:31:21
ドラッグ&ドロップ部分はView.csで書いて
リストに追加された時にBindingで値を取得するってことでいいのかな
0793デフォルトの名無しさん2010/11/26(金) 12:41:13
MVVMの雛形を毎回作るのが面倒なんだけど
何か良い方法ないですか?
テンプレートみたいなものは自分で作れるんだっけ?
0794デフォルトの名無しさん2010/11/26(金) 13:42:47
その程度のことが面倒に感じるようなものにMVVM適用するのはどうかとおもうけど
必要ならPrism Template Packでも使えば
0795デフォルトの名無しさん2010/11/26(金) 13:45:03
Prismって何かバグがあったような気がするんだが
0796デフォルトの名無しさん2010/11/26(金) 14:09:36
>>794
なにそれ?
0797デフォルトの名無しさん2010/11/26(金) 21:02:09
何かバグはあるさ!
0798デフォルトの名無しさん2010/11/26(金) 22:58:04
>>793
テンプレートでできなくもない。t4 templateでぐぐると、いくつかmvvmのコード自動生成の作例が出てくる。
WPFはもっとコードの自動生成を取り入れないと普及しないだろうねえ。
イベントハンドラのスタブをタブキー二回で作ってくれるぐらい簡単に。
0799デフォルトの名無しさん2010/11/27(土) 01:28:16
xamlにインラインコードが使えるようにならないかな…
0800デフォルトの名無しさん2010/11/27(土) 07:31:38
VMのプロパティはEXCELとか正規表現とかでなんとか生成できるレベルだけど、
DependencyProperty実装するときのの凶悪なコーディング量はどうにかしてほしいもんだ
0801デフォルトの名無しさん2010/11/27(土) 11:22:15
>>800
あれはほんと後付けらしい醜さがあるな・・
lispのマクロとか欲しくなる
F#のワークフローとかコード引用符使ったらすっきり書けるかな(よく知らないけど)
0802デフォルトの名無しさん2010/11/27(土) 13:15:23
propdp[TAB]

まぁ、メンテも含めたらそれでも十分に極悪だがなw
0803デフォルトの名無しさん2010/11/27(土) 13:37:58
>>802
そんなのあったんだ
http://msdn.microsoft.com/ja-jp/library/z41h7fat.aspxに載ってないのに…

でもコールバックは自分で追加せんといかんのが片手落ちだな
0804デフォルトの名無しさん2010/11/27(土) 13:38:29
WPF入門とかのページそこそこあるけど
イゾンプロパティの話で
propdpのインテリセンスのこと書いてるのほとんどないよね


ぶっちゃけ、細かい使用とか話してpublic static readlyうんちゃらかんちゃら作る必要があります
ってかくより、これらはおまじないです
propdpでイゾンプロパティが作れます
だけでいいと思うんだが。
0805デフォルトの名無しさん2010/11/27(土) 13:44:26
いや見た目にうざいしスニペットがありゃいいってもんじゃないと思うけど
0806デフォルトの名無しさん2010/11/27(土) 13:47:11
WPF入門であって、VS入門じゃないから
0807デフォルトの名無しさん2010/11/27(土) 19:39:55
StyleCop先生「
 さぁ、private static readonlyは先頭に並べるのです、
 そしてプロパティはコンストラクタ、イベントの後ろです。
 イゾンプロパ…何それ?」
FxCop先生「
 アホかぼけ、なんでこんな糞コードを書…XAMLから自動生…しるかボケ!」

言語構文に組み込んでくれとまではいわないが、
せめて自社ツールだけでもどうにかしてくれ
0808デフォルトの名無しさん2010/11/28(日) 13:55:50
>>788
つかってるよー
3次元プロットはグラボ必須だし、
4次元の可視化はシェーダが欲しい。
0809デフォルトの名無しさん2010/11/28(日) 18:13:02
オサレなGUIより地味だけど機能的で快適なほうが良い
0810デフォルトの名無しさん2010/11/28(日) 18:21:32
美しさが分からん奴にそんなもの作れないよ
機能美って言葉を知ってるかい

VimだってEmacsだってあれはあれで美しいのだ
0811デフォルトの名無しさん2010/11/28(日) 18:29:02
>>809
オサレ⇔地味って軸と UX の良し悪しはそこまで相関ないよ。
オサレで使いやすい、オサレだけど使いにくい、
地味でも使いやすい、地味な上に使いにくい、全部ある。
0812デフォルトの名無しさん2010/11/28(日) 18:43:57
特定の顧客から依頼を受けて作るならいいけど
そうでなきゃ「うわ、地味。ショボそう」とか思っちゃう人もいるしな
0813デフォルトの名無しさん2010/11/28(日) 21:34:41
モジの色がカラフルで、画像と合わせて、グラデーションかかったボタンが激しく動き回り・・・
おしゃれだけど、見づらくて使いづらそうだね。
0814デフォルトの名無しさん2010/11/28(日) 21:36:08
地味に作りたきゃ地味に作れるだろ
お前しだいだ
0815デフォルトの名無しさん2010/11/28(日) 21:38:34
というか>>813がオシャレかな
派手でセンス悪いだけだろう
0816デフォルトの名無しさん2010/11/28(日) 22:05:10
>>813
おしゃれなの?それ
楳図かずおみたいな奴だな
0817デフォルトの名無しさん2010/11/28(日) 22:08:32
どんな恐怖アプリだよ
0818デフォルトの名無しさん2010/11/28(日) 22:12:43
そういうセンスの人はblinkとかマーキーとか使いまくっちゃうんだよ
0819デフォルトの名無しさん2010/11/28(日) 22:26:27
提供された機能は使い切らないといけないみたいな信条でもあるんじゃねえか
0820デフォルトの名無しさん2010/11/28(日) 22:29:10
ボタンが動き回り・・・
の点々がいいよね

ボタンなんかどんなGUIフレームワークでも動かせるけどお前ボタン動き回る画面なんか作ったことあんのかよとw
0821デフォルトの名無しさん2010/11/28(日) 22:30:05
js覚え初めのころ逃げるボタンとか作ったよ
0822デフォルトの名無しさん2010/11/28(日) 22:31:16
>ボタン動き回る画面
Blend最初触ったとき作ったぞw

残念ながら世に出ることは無かったが
0823デフォルトの名無しさん2010/11/28(日) 22:47:37
画像に合わせて激しく動き回るんだぞw
0824デフォルトの名無しさん2010/11/28(日) 22:49:33
つかまえてごらん〜

うふふふ
0825デフォルトの名無しさん2010/11/28(日) 23:21:43
埼玉の産婦人科「愛生会」の医院長が作った。
0826デフォルトの名無しさん2010/11/28(日) 23:46:57
>>825
あの人、美的センスはあるはずw
ネイチャーフォトのレベル高いよ
0827デフォルトの名無しさん2010/11/28(日) 23:55:05
WPFを使っているとありがちなこと
・なんでもかんでもアニメーション
・フェードインフェードアウト乱発
・とりあえず半透明
・以上を全てやっていないとゴネだす上司や低能デザイナーがいる

VS2010のI/Fのようにシンプルな見た目で
要所要所をピンポイントで強調するような使い方が一番上手いんだろうが、
そこまで理解できる人(得に上司)が世の中どれだけいることやら。
0828デフォルトの名無しさん2010/11/28(日) 23:55:21
ところでみんな、SQL使ってる?性能でてる?
0829デフォルトの名無しさん2010/11/28(日) 23:56:48
ごめん、誤爆
0830デフォルトの名無しさん2010/11/29(月) 00:07:50
>>827
だって、せっかくそういう機能があるんだもん
使わないともったいないじゃん
0831デフォルトの名無しさん2010/11/29(月) 00:24:48
アニメーションは体感速度に繋がるから
不必要値は言い切れない
0832デフォルトの名無しさん2010/11/29(月) 00:36:36
アニメーションも入れ方次第なのよね。
単に派手にするだけのビジュアルデザインじゃだめ。
UX デザインしないと。

例えば、Windows のウィンドウを最小化するときのアニメーションには
「次、ここをクリックしたら元のサイズに戻せますよ」という場所を示す意味がある。
でたらめな場所に向かって縮小したりしちゃダメ。
0833デフォルトの名無しさん2010/11/29(月) 01:51:37
ウィンドウは四角ければ十分な俺には全て無駄に見える
なんで見た目に凝るのか
0834デフォルトの名無しさん2010/11/29(月) 01:55:20
まあwindows上だと意味ないよね
ひたすら効率化の世界だしUIもあれだし

凝るとすればタブレットとか最近流行りのUIなどでの話だね
0835デフォルトの名無しさん2010/11/29(月) 01:56:18
>>833
まだ見た目(ry
0836デフォルトの名無しさん2010/11/29(月) 01:56:29
機能だけでいいならものつくりは簡単だな

車、パソコン、携帯電話、携帯ゲーム機、扇風機etc
たんにその本来の役目さえ果たせればいいんじゃなくてかっこいい見た目じゃないと売れない。
プログラムも同じことだよ
0837デフォルトの名無しさん2010/11/29(月) 01:59:25
>>833
ウィンドウなんて必要か?凝りすぎじゃね?
0838デフォルトの名無しさん2010/11/29(月) 02:05:14
そういえばそうだな
だが文字入力はいやだ
0839デフォルトの名無しさん2010/11/29(月) 02:18:29
文字入力が嫌ってイミフ CUIが嫌なんじゃないのか。
0840デフォルトの名無しさん2010/11/29(月) 02:25:10
ここの人たちCUIでわかるのか
じゃあCUIがいやだ
0841デフォルトの名無しさん2010/11/29(月) 02:26:44
データバインディングってのは
ターゲットもソースも
両方依存関係プロパティじゃないとダメなの?
0842デフォルトの名無しさん2010/11/29(月) 02:27:43
ああ、アレだろ、クイね。
もちろんわかるよ。
0843デフォルトの名無しさん2010/11/29(月) 02:28:42
>>836
まったく。
機能だけなら簡単と言い切るつもりもないけど、機能そろってりゃ他はどうでもいいってもんじゃない。

芸術的な意味のビジュアルデザインよくないと売れないというのももちろんあるし、
同時に UX デザインもされてる。

ボタンの位置とか大きさはどうなってれば使いやすいかとか、
ものすごいノウハウの積み重ねがある。
0844デフォルトの名無しさん2010/11/29(月) 02:29:23
>>841
ソース側は割と自由効く。
0845デフォルトの名無しさん2010/11/29(月) 02:30:30
>>841
ターゲットは依存関係プロパティじゃないとダメ。ソースは普通のプロパティでおk
0846デフォルトの名無しさん2010/11/29(月) 02:41:25
>>845
なるほどThx
TextBoxに入力した値が、いちいちなんちゃらイベントとか作らずすぐに画面に反映されて感動した。
0847デフォルトの名無しさん2010/11/29(月) 13:07:33
まともにWPFを解説してるサイトが
@IT、未確認飛行C
の二つしかない。

この二つだけで勉強しろというのか
もっとふえねぇかな。
0848デフォルトの名無しさん2010/11/29(月) 13:14:30
>>847
msdnが基本だろ
0849デフォルトの名無しさん2010/11/29(月) 13:18:32
wpftutorialはダメなん?
0850デフォルトの名無しさん2010/11/29(月) 20:18:41
俺もデータバインディングやって触ってみたけど、
XaML
■ このスレッドは過去ログ倉庫に格納されています