WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
1 :
デフォルトの名無しさん :
2009/12/27(日) 10:58:30
今年こそWPFを習得するぞ!!
今年の抱負ですね
>2>3 残り、5日ですね。
それを言っちゃあ、おしめえよ
なあに、5日もあれば十分さ
諦めるには3日あれば十分さ。 完成度の低さを悟るには3分、 全体の出来の悪さを悟るには3時間あれば十分だけどな (特にXAMLエディタとコントロールのなさ)。
わからなくて悔し泣きしてる人
コントロールとか自分で作れよ 作れるんだから
足りないコントロールって例えばなんだっけ そこの頭の足りなそうな人、上げてくれるかな
PropertyGrid はほしいと思った
タイムライン(できればFlashのような)を扱うコントロールってあるでしょうか?
まあでもFormに比べると習得難度の高さはネックだよなぁ。 ポトペタするだけならWPFじゃなくたっていいやってなるし。
16 :
デフォルトの名無しさん :2009/12/27(日) 16:36:14
Formに比べて敷居が高くなっていた上、習熟しても手間が増えることには変わらない。 ツールの支援もションボリだし、4.0にならないと標準でテーブル部品すらない。 かといって「これがないとできないことが」という代物じゃない。 MSは一体どうしたいんだろう、コレを。
Aero Glass を駆使するアプリを作るのは Forms よりだいぶ楽かな
前スレだか前々スレで出てたけど、BtoBな業務システムでは致命的なぐらいおよびでないよね。 少なくとも今のところは。
blendよりリッチなツールの支援なんて他のプラットフォームにないだろ 2年前にウケた発言を繰り返す猿だな 外人はもう移行してるよ
外人移行してるかぁ????
まぁやりたくない人には無理に勧めなくてもいいでしょ 俺はおもしろいから移行するけど とりあえず新しいもの勧めて最終的には客が決めればいいよ
今のところFormが廃止されるって話がでてるわけでもないし、 WPFは使いたい人が使うでいいんじゃね? 見た目が凝ってたほうが良い場合も大いにあるし。 開発者の習熟度合とあわせてゆっくり移行してけばいいさ。 まさかWindows7の次でWPF廃止なんてこともないだろうしな。
最終的にビットマップベースのUIのほうが生き残るなんてことはありえないよw
Vista発売当時 Vistaユーザ「XPが生き残るなんてことはありえないよw」 WPFにWinFormを駆逐するほどメリットは無いし、必須でもない。 新しもの好きが使う代物、で終わる可能性もある。
その例全然関係ないじゃん だいたい「XPが生き残るなんてことはありえないよw」こんな発言聞いたことないわ バカじゃないの
「ビットマップベースだと生き残れない」も全くの暴論、根拠皆無だがな。
廃止とか言っちゃってる人はプログラミングしたことないんじゃないだろうか
WinGみたいな過渡期の遺物になるやもしれん
formsが過渡期だよ wpfが決定版になるかはわかんないけどね
最後に生き残るのはSilverlight
>>26 まあプリンタの歴史とかdirectorとflashどっちが残ったかとか考えるとわかるとおもうよ
暴論でもなんでもない話
詭弁の特徴のガイドライン 3:自分に有利な将来像を予想する 4:主観で決め付ける 6:一見関係ありそうで関係ない話を始める まぁプリンタとWPFが同じことになるか、VistaとWPFが同じことになるか知らんが、 技術の動静など単体の要素で決まるものでなし、どっちも風桶の域をでない。
なにわかったようなこと言ってんだよバカ formsじゃquartzに追いつけない 真横に実例があるんだよ
何をそんなに火病っているのかは分からないし興味もないが、 技術的に優れている物が商業的に失敗する事例なんて山のようにある。
そうだね それを期待してformsと心中すりゃいいんじゃねえの
別にWPFが流行ろうが廃れようが自分が死ぬわけじゃないんだし。 今勉強する余力がないなら(それは別に恥かしいことではない) 廃れろ廃れろ言ってないで横目にみてればいいのにね。
廃れろ廃れろ、じゃなくて「メリットが分からん」じゃないのか? 俺も、どういう分野で需要(メリット)があるのかサッパリ分からないが。
バインドを多用できるケースは明らかに楽。 後は、キチンと設計すればテストが楽。 従来の開発スタイルそのままでFormsを置換しようとするから有り難みがわからんのだと思う。
ある程度の規模にならないとメリット見出せないと思う。 記述量だけでいったらFormより多くなるから。
泳げなければ沈んでもいいじゃないか
datagridview一式がD&D一発でセットできるformsはそりゃすごいけど アニメもできないしHLSL使えないしグラフィック書くのもOnPaintだし、 そういう方面だとforms使う理由がないよね
外観のキャッチーさが要求される業務自体が非常に少ないのが事実。 WPFの紹介では、とにかく見た目や動きがプッシュされがちだけど、従来との比較でいえば アーキテクチャの違いの方が重要だと思う。
見た目は副次的なものでしかないよな。 まあ分かりやすさでそれをアピールしたのだろうが、 それを勘違いして見た目だけだのなんだの言う馬鹿者が出てくる始末。
リッチなUIを目指して設計されたんじゃないの? 見た目は重要な要素だと思うけど
>>44 アニメーションがストレスを軽減するのはMacやiPhoneが実証している
実時間が長くても、見た目フリーズしてないだけでもイライラは抑えられるってこと
XP時代のGUIはキビキビ動くし隣に並べての比較でVistaに比べて早いことがアピールされてたけど、
実際Vistaだけ使ってると快適に感じるのと一緒(操作性は別として)
ただ待たせるよりプログレスバー出したりスプラッシュスクリーンだしたりするだけで 具合がちがうってのは割と一般的なのにな。
47 :
13 :2009/12/28(月) 12:10:55
>>13 自己レスになりますが、動画編集に使うようなタイムラインコントロールはなさそうですね。
ExpressionBlendで使われているので標準であるものかと思っていたのですが・・・
mac使って帰ってくると、なんつー雑なUIなんだ(例:windowsカレンダーとかlive writerとか・・・)って感じするからな 静止画的な見た目はむしろWinFormsでも張り合えるけどね
49 :
デフォルトの名無しさん :2009/12/28(月) 14:44:46
ユーザーインターフェイスの話と UIフレームワークの話とは全くの別物だべ。
は?
デザイン(見た目)そのものは作り手のセンスとスキル次第でどうとでもなるかんね。 フレームワークの良し悪しとはあんまり関係ない。
もうちょっと勉強したほうがいい
この世で最も非生産的な突っ込みだな。
FormとWPFでどっちが良い見た目を簡単につくれるかもわかんないのか
オナニーUIがなしたって?
オナニーじゃ済まされないからフレームワークが必要
たしかに雑なUIのほうがオナニーに近い気はする まあそういう意味で「オナニーUI」って言ってるんじゃないだろうけど
アニメーションとかも使い所間違うとストレスたまる一方だよな。 どういう局面ではどういうデザインが効果的かとかの WPFガイドラインみたいなのってもう出てるんだろか。
wpfっていうだけでストレスになってる人も多そうだw
60 :
デフォルトの名無しさん :2009/12/28(月) 19:25:41
長ったらしいアニメーションはストレスだからなー きびきび0.2秒くらいで遷移してくれるならいいけど
writeableBitmapって書き込んだのがそのまま表示されるの? なんだか妙な変換されてるような気がしてならないんですけど
PixelFormatによる
ありがとう 妙な変換されないようにしたいんだけどどれ選べばいい?
変換だろ? ならオリジナルのbitmapsourceのformatをそのまま押し込んでやればいい
>>59 使う人にとってはWPFだろうが何だろうが関係ないが、
ある程度高機能なアプリをWPFで作ったら
推奨環境は平気でCore2Duo 3GHz以上になっちゃうんじゃないだろうか?
>>67 重要なのはDirectXのハードウェアサポートだろう
>>67 イメージしてる「高機能」がどのリソース使うのかわかんないからなんともいいようがないけど
個人的にはクロスプラットフォームのDTM系のソフト(いわゆるDAW)が社内で内製するような
ux重視のライブラリみたいなもんをMSが用意したという感じで捉えてる
こういうのは昔からリッチなGUIと高機能を同時に提供してた
wpfみたいなもんてどう使うのとかいう向きは一度この手のソフトを弄ってみるといいと思う
70 :
デフォルトの名無しさん :2009/12/29(火) 01:00:22
WPFを会社で使い始めたんだがマジストレス溜まる。 なんでこんな継ぎ足しみたいな酷い設計になってるんだ? 思想自体は悪くないし、むしろ応援したいくらいなんだが、 内部の設計がお粗末すぎないかこれ。 ちょっとサンプルより凝った事しようとすると途端に辻褄合わせに苦労する。 そもそもサンプルも例外出まくってるし。 何でもかんでもTemplateって言えばいいってもんじゃねーぞw 皆すげーな。 アーキテクチャの理解に二週間くらい戦ってるが未だによく分からん。
71 :
デフォルトの名無しさん :2009/12/29(火) 01:08:06
みんな手探りですよ、と ぶっちゃけ例外はログとって握りつぶそうぜw はやくまともな日本語の本出ないかなぁ
綺麗なGUI作れそうだな〜思うけど 情報が出揃うまではFormsで十分かなって思ってしまう。
3か月から半年付き合えばすらすら〜って書けるようになるよ。
MVVMはFormsでもリフレクションつかってやってたからすんなりいけた XAMLもそれほど問題はない が、なにぶんWPFは開発環境が重すぎるw もうちょい何とかしてくれorz
'System.IO.FileNotFoundException' の初回例外が mscorlib.dll で発生しました。 'System.IO.FileNotFoundException' の初回例外が PresentationCore.dll で発生しました。 気持ち悪い
例外処理しなよ
日本語の本だが、βを対象に書いていたchris cellsの本は、 βゆえに記述は古いけれど内容はいい。 これにエッセンシャルWPFを組み合わせて設計思想をつかんだら あとはMSDNとblogあさりでいい。
78 :
デフォルトの名無しさん :2009/12/30(水) 02:19:31
赤坂玲音っつー人の本は、 あえてほとんど全てのサンプルコードがC#コードでの記述になっていて、 XAMLの解説は最終章でちょっとだけという構成なのでまあこれはこれでありがたいと思った。 WPFはちょっと深入りするとコード側から記述せざるを得ないことも多いから。 ただサンプルの文字出力やメッセージ文が 「宇宙人、異世界人、超能力者」とか「ただの人間には興味ありません」とか 「ジャンクにしますよ」とかばっかりなので、そういうセンスが鼻につく人も多いだろうな。
wpfのバインディングのデバッグってどうしいたらいいんですかねえ。 xamlのインテリセンスが効かないこともあって、ElementNameうち間違ったり すると絶望的なんですが。
名前が見つからないってエラー出るだろ
なるほど。デバッグ出力を見ればいいのか。 でも、これだけを頼りでは大変すぎ。 名前間違いならエラーも出るけれど、複雑なバインディングで構造違いだったり 参照違いだったりの場合はエラーも出ないですし。
俺らに言われてもな。どうしろと?
84 :
デフォルトの名無しさん :2010/01/01(金) 11:16:24
>>83 Modelが文字のバッファで、
Business Layerは、文字の切り取り/貼り付けといったメモ帳の機能。
WPFつくりずらいな 一回コンパイル失敗すると二度と通らなくなったりする
それは流石に使う側の問題だと思う
Popupが使いにくすぎる。Primitivesの癖に…
折れ線を描くのはどうすればいいですか?
Polyline
ありがとう DrawingGroupで使えないんだ
ありがとう、ためしてみる
Imageって座標がマイナスだと勝手に全体を移動させてしまうのね
(-10, -10)に字を書くと(-10,-10)が左上角に表示されるように全体が右下方向に移動した 座標が大きいときは表示されないのに
地球を一周させれば元にもどる( ・ω・)y─┛〜〜
やっとわかった DrawingGroup.ClipGeometry設定すればいいのか とりあえず97は地球七周半してこい
1秒かかりますが
97から見れば0秒なので問題ない
地球七周半というのは都市伝説なのに(´・ω・`)
>>101 なんで?
光の速さが秒速30万kmで地球の赤道付近の円周が約4万kmだから
ほぼ7.5周じゃん?
>>102 ・光は地表に沿って曲らない
・真空じゃない
ようするに揚げ足とり。
光にスピードなどありません。すべて一瞬です
光の速度とWPFの関係について140字以内で述べよ。(10点)
WPF → WPF/E → Silverlight → 銀の光
1 8 3 6\ × × × 5 9 2 7 4/ 上記のように点を数字順にたどるgeometryを定義して 閉じた部分をそれぞれちがう色で塗りつぶしたいのですがどうすればいいですか?
WPFと関係あるのか??
linergraなんとか使えば? 自動で塗り分けろ? じゃあ仮にそういう機能があったとして、どの場所が何番目の色ってどうやって指定するつもりだい
linergradientbrush? よくわかんない しゃーない 交点探してチマチマやるか
いつのまにかFirefoxがXBAP WPFブラウザアプリ非対応になってやんの。 さっさとSilverlightに代替えしろってか。まあWCF対応バインディングも増えたし。
112 :
デフォルトの名無しさん :2010/01/19(火) 11:55:31
grid で showgridlines プロパティを有効にして表示される線の種類を変えたいのですが・・・ 簡単にはできないでしょうか?
> グリッド線を有効にすると、Grid 内のすべての要素が点線で囲まれます。 > このプロパティはレイアウト上の問題をデバッグするためのデザイン ツールとして用意されているものであり、 > 製品品質のコードで使用するためのものではないため、点線以外は使用できません。 > Grid 内に線を表示するには、Grid 内の要素に対して境界線を含むスタイルを設定します。
>>113 ありがとうございます。
諦めてセルになる部分にBorderとCanvasでも噛ませて中にコントロールでも突っ込みます。
115 :
デフォルトの名無しさん :2010/01/21(木) 14:52:10
WPF初デビューでみなさまよろしこ これってアプリなのに内部的にはクラサバもしくはJavaではよく聞くMVCモデル で動いてるような物ですよね つまりc#で描く側が鯖イメージでXAMLで書いたり表現するGUIがFormぽく振舞ってる ブラウザというか
概念はさほど重要ではない…いや重要か .NET自体動作原理はVMに近いものだし
117 :
デフォルトの名無しさん :2010/01/21(木) 14:59:19
>>116 結構重要だと思いますw
WPF以前のアプリだと密接でしたがWPFだとたとえばTreeViewにデータ流し込むにしても
やってることはC#で書いたListをどこかにあるDBのように見ますし
なんというかunixのXというかなんというか
118 :
デフォルトの名無しさん :2010/01/21(木) 15:02:59
というかそんな中身はどうでもよくて重要なのはグラフィカルなGUIってところなんですが 参考になるサイトはないでしょうか?
とってもVBだと思います
Xとはじぇんじぇん違うと思います。
XAMLとコードビハインドは普通は密結合だよ Form1.Designer.csとForm1.csの関係に対応する MVVMはもう一段上の概念
MVVMやってるとコードビハインドを空にしたくなる病気が・・・
コードビハインドはMVVM的にはViewの一部だからな MVVMでいうビューとロジックの分離と,一般にWPFでいうビューとロジックの分離は意味が違う
Xって…
WPFやってるとモデル構築時からもう依存関係プロパテイで実装したくなる
横長のグラフの一部をスライダーの動きにあわせて表示させるアプリをつくってみたんですが、 いくつか表示させるととても遅くなります ImageコントロールにDrawContext使って描画することできそうだと思って ImageのSourceにDrawingImageいれて、そのDrawingにDrawingGroupいれて、 Sliderが動くたびにDrawingGroupからDrawingContext取得して、DrawDrawingやDrawLineで描画してます さて、もっとキビキビ動くアプリにするためにはどうしたらいいでしょう?
まずは認識を改めようか 「DrawingContextは遅い」
orz どうすればいいですか? 何を使えば早いですか?
WriteableBitmapは?
自分で点を打っていくんですか・・・くたびれるなぁ
RenderTargetBitmap使って適当にキャッシュしたら
Bitmapをいっぱいつくるってことなんですかね? トライしてみます ありがとう
133 :
デフォルトの名無しさん :2010/01/22(金) 00:59:50
Evernote3.5のクライアントってWPFなんだな
解説より作例を見たいよね
>>138 このスレにはやさしい人がいてうれしいな
ありがとう
ソースからUML書いてくれるツールないかな
>>140 あるよ。
JUDEの後継のastah* は Java/C#/C++のソース/UML間相互変換をサポートしてる。
ただし無料版はどれも不可だけど。
JUDEの時はJava出力に関してはフリー版でも出来たと思ったんだけどなぁ。
142 :
134 :2010/01/23(土) 10:08:28
WPFでバルーンヘルプ出すにはどうしたらいいの? 教えて偉い人。
Accordion+Binding+Resize時の4004エラー回避できぬ。 ぬぬぬぬ…。
最近MSDNの内部リンク切れまくっていないか?使い辛いっつーか、使い物にならん。
>>143 目的が分からんからどうとも言えんがツールチップかポップアップ使えばいいんじゃないか?
偉くはないが
>>145 ,146
すごい。瞬速で解決。ありがとう偉い人たち!
サンプルのダウンロードとかそこらじゅう
>>149 >>142 で訂正したけどサンプルが更新されている場合は「.Net Framework 3.5」の方からダウンロードできる。
あとブラウザをIEに変えるとうまくいくことがあったので試してみて。
ライトウェイトにしてるから?
>>152 え?
…クラシックだと見れるのね。なんじゃコリャw。
切り替えるとなおるのか、キャッシュ探すよりもずっと楽だ。トン
ライトウェイトけっこう適当な作りしてんのなw
155 :
デフォルトの名無しさん :2010/01/23(土) 21:41:58
ItemsSourceにBindしてる時、その中の子のコントロールが自分のItemを知る事は出来ますか? 子のコントロールでBindしてパラメータとして渡したいのです。
ん? DataContextじゃダメ?
157 :
デフォルトの名無しさん :2010/01/23(土) 22:11:02
すみません、情報不足でした。 Prism for Silverlight使っててxamlで指定して上げたいのです。 <ItemsControl ItemsSource="{Binding Items}"> <ItemsControl.ItemTemplate> <DataTemplate> なんちゃらこうちゃら CommandParameter="{Binding 現在のアイテム}"←ここ </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
Itemsの中の要素に対してバインドしたいんだよね? 「Binding Path=.」か「Binding RelativeSource={RelativeSource Self}, Path=DataContext」でいけない?
159 :
デフォルトの名無しさん :2010/01/23(土) 22:52:04
あれ?もしかしたら違うところで躓いてるかも…。 <ItemsControl ItemsSource="{Binding Items}"> <ItemsControl.ItemTemplate> <DataTemplate> <Button c:Click.Command="{Binding MyCommand}" ←このMyCommandはItemsにはなく、DataContextのViewModelにある。 c:Click.CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=DataContext}"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> この状態でButtonをクリックするとMyCommand自体が呼ばれません。 ItemsControlの外に置くとうまくBindされてMyCommandは実行されます。 これはおそらくItemsの中にMyCommandがないからだと思われますがうまく"Binding MyCommand"の箇所をViewModelのMyCommandが呼ばれるようにするにはどう設定すればよいのでしょうか? Binding ../MyCommand←これはだめでした。 Binding this.DataContext.MyCommand←これもだめ。 うーん…。
MyCommandはItemsControl.DataContextがもっているが、 CommandParameterに渡すのはItemsControl.items内の要素ってこと? そんな使い方したことないから実際やったことはないが a) ItemsControlにx:"Name=itemContorlName"を指定して Command={Binding ElementName=itemContorlName,Path=MyCommand} b) Command={Binding RelateveSource={RelativeSource AncestorType={x:Type ItemsControl}}} のどっちかで解決しないか? > この状態でButtonをクリックするとMyCommand自体が呼ばれません。 出力ウィンドウをみればバインド失敗は表示されるけど…何か出ていない?
161 :
デフォルトの名無しさん :2010/01/24(日) 00:12:23
//Model public sealed class Model { public string A {get; set;} } public sealed class Models : ObservableCollection<Model> {} //ViewModel public sealed class ViewModel { public ViewModel() { this.Items = new Models(); this.MyCommand = new DelegateCommand<RequestItem>(OnMyCommand); } public void OnMyCommand(Model item){ } public Models Items {get; private set;} public ICommand MyCommand {get; private set;} } //View public sealed class View { public View() { InitializeComponent(); this.DataContext = new ViewModel(); } }
162 :
デフォルトの名無しさん :2010/01/24(日) 00:21:57
上記がMVVMの仕様です。
これで説明しやすくなりました。
この仕様でバインドした時
>>159 のMyCommandがViewModelにあるMyCommandでバインドされないのです。
Model側に"ICommand MyCommand"のプロパティを持てばバインドされるのですがそれではModelとしてふさわしくないように思えます。
・させたい事
ViewModelのMyCommandを
>>159 のItemControl内のButtonにバインドさせたい。
ttp://msdn.microsoft.com/ja-jp/library/cc645024%28VS.95%29.aspx#ppincode (ここも見てみましたが上位?Pathの設定の仕方がわかりませんでした。)
ためしにModel側にMyCommandをもちバインドさせ
>>158 の方法で"Item"を参照できるか試しましたがOnMyCommandの"Model item"はnullとなってました。
163 :
デフォルトの名無しさん :2010/01/24(日) 00:24:30
>>161 の訂正
×this.MyCommand = new DelegateCommand<RequestItem>(OnMyCommand);
○this.MyCommand = new DelegateCommand<Model>(OnMyCommand);
.NET4.0のMediaElementでH.264のサポートはないの? silverlight3では動いたので.NET4.0で験してみたのだけど。
165 :
デフォルトの名無しさん :2010/01/24(日) 01:41:12
>>160 UserControlに名前をつけてa)の方法でDataContextを参照したところうまくいきました。
本当はUserControlに名前をつけるとBlendにて警告が出るのでb)のAncestorTypeを使ったものを採用したかったのですが
SilverlightではSelfとTemplatedParentしか用意されていませんでした…。
>>165 これでどうですか?
<Window.Resources>
<c:CommandReference x:Key="MyCommandReference" Command="{Binding MyCommand}" />
<Window.Resources>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="{StaticResource MyCommandReference}"
CommandParameter="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
うまくいかなかったら実験したProjectをどこぞにうpします。
167 :
デフォルトの名無しさん :2010/01/24(日) 21:05:50
>>166 うまくいきました!
ありがとうございます。
WPFの質問スレとか見当たらなかったので、お手数ですが少しよろしいですか? 非リアルタイムの2Dゲーム(ADVに近いものを想像してください)を作るにあたって、 WPFを利用するのは有用でしょうか? WPF関連の書物は高い&3Dゲームに関する記述しかないのですが、 ざっと確認したイメージ的にはいけそうな気もするんですよね。 有用だというのならば、思い切って専門書買ってみようと思うのですが、 よろしければアドバイス頂けませんか?
WPFはオサレなGUI(ボタンや部品がうにゅーっと動くようなの)を作るのには向いているがかなり重たい。 作れなくはないが、ADVなら積極的に採用する理由はあまりないんじゃないか?
まあWinFormsのSystem.Drawingで作るよりは遥かに速いし簡単に綺麗なものが作れるよ
172 :
デフォルトの名無しさん :2010/01/24(日) 21:22:32
>>168 2DゲーでADVに近い物ならVC#でも十分可能だけどね
んー、やっぱり動かしてみないと判断難しいんだろうか?
かといって図書館にも置いてないしなあ。
>>169 少し説明が難しいのですが、動的に処理すべき場所があまりにも多いんですよね。
するとフォームデザインがどうも役立たずっぽいので、WPFの方が適切ではないかと思ったわけです。
速度はイライラしない程度なら問題はないと考えています。
>>170 それはちょっと朗報です。ありがとうございます。
>>171 うわw これは素直にすごいなあ……
ここまでの処理は求めてませんが、期待持てそうです。
>>172 どうもゲームプログラミングは苦手で、それなのに任されちゃって四苦八苦なんです。
いざ調べてみると想像以上に資料少ないですよね。
市販の書籍なんて、ほとんど画像表示の方法とかに終始してますし。
ピクセルシェーダが簡単に使えるのは面白いよな
>>171 はやってみると意外と難しくない
・・・環境にもよるんだろうけど作るだけなら吉里吉里でも 使えばよかろうに
でもADVみたいなのにWPFはありだと思うけどなぁ。 UIかっこよくしてなんぼって感じもするし。
>>174 やれるとしても当分先だと思いますが、これは確かに面白そうですよね。
たとえ今回の件にそぐわないとしても、近いうちにWPFには手をつけてみようかなーと思い始めてきました。
数値計算とかばかりやってきた身としては、もう少し普及して間口が広くなってほしいってのも本音ですけどね……
>>175 ADVみたいなものって説明が悪かったですね。
雰囲気としてはそれっぽいものではあるのですが、某レトロゲームのシステムを踏襲+拡張したものなので、
簡易的なものじゃちょっとまかなえないんです。分かりにくくてすみません。
WPFと吉里吉里とで作れるゲームの幅は変わらないと思うよ
吉里吉里はJavaScriptライクな言語TJS2の実行環境+クラスライブラリといった体裁だから、やろうとおもえば結構がっつり組めるよ でもWPF製のゲームも見てみたいから頑張れ
>>171 こういうの見るとモチベーションが上がるな。
上がって何をするかというと、2chとMSDNを往来することなのだが。
こういうのは早いのになんでDrawingContextは遅いの? もっと早く線描けないの?
>>181 処理が違うから?
大量の色情報に対して同じ処理を高速にやってるだけだし
上画像のピクセルのアルファ値を高速に変えればできる処理なんで
GPUのもっとも得意とするところじゃん
DrawingContextで描画するような内容ってピクセルのアルファ値かえるだけのような
話じゃないしね
183 :
デフォルトの名無しさん :2010/01/25(月) 16:27:31
c#でも画像の合成表示ならできたな ちらつきとか抑える方法はよくわからんけど サンプルソース居る? というか配布する際どれを渡せばいいんだろうw .netのソースって開発環境のパスが埋もれてるとか聞いたけど
*.Cs とか *.xaml とかでいいんじゃね?
185 :
デフォルトの名無しさん :2010/01/25(月) 16:44:34
186 :
デフォルトの名無しさん :2010/01/25(月) 17:19:21
なるほど
デバッガでエラーが起きた場所が分からなくてつらい
遅くなってしまい申し訳ありません。168その他です。
昨日はくだらない質問に対していろいろとありがとうございました。
氷点下の世界を旅して、思い切ってWPFの本を買いに行ってみたのですが、取り扱ってる店が1件もありませんでした……
佐川のお兄さんに運んで貰おうと思います。
>>178 ,179
吉里吉里ってそこまで高性能だったんですね。
あまり使う機会もありませんし、ハッシュは配列にキャストしてから〜ってのがうざったくて放置してました。認識改めます。
むしろWPFを使いこなせてないから同レベルくらいに見えるんだろう それが悪いというんじゃなく、それくらい習熟するのは時間がかかる
192 :
デフォルトの名無しさん :2010/01/26(火) 00:14:08
ほとんどのノートPCで使われてるSynapticsのタッチパッドドライバがWPFと相性悪いらしく、
ListBoxほか大多数のScrollViewer系のコントロールで
パッドのフチを使ったスクロールができず困っていたのだけど、
今年に入ってSynapticsがScrybeというツールのCTPを公開し
その中に最新のタッチパッドドライバ15.0.0.1が含まれていて、
インストールしたところWPFアプリでもスクロールできるようになった!
http://www.uscrybe.com/index.html PCメーカーのサポートページから入手できるタッチパッドドライバは大抵古いバージョンなので
WPFのスクロールで困ってる人はこっちをインストールしてみてくれ
以上チラシの裏でした
>>191 つまりWPFのほうがより高度なものが作れるってこと?
>>171 の例1つとっても、画像使うか既定プリセットしかないきりきりより、
自分でHLSL書けるWPFのほうが高度だよ。サンプラーだって上限まで使えるしね。
ていうか、制御するコードにしてもVSとC#使えるんだから、そこらの簡易言語じゃ
勝負にならんでしょ。覚えることは多いけどね。
綺麗なのだけじゃなく、スピード重視のローレベルな描画メソッド充実させてほしいな そしたらもっと裾野広がるのに
どっちにしてもWPF使ってツクールみたいなの作るはめになるんだと思うけどな。 べたがきだと使い回しきかんだろうし。
197 :
デフォルトの名無しさん :2010/01/26(火) 09:49:21
>>196 ツクールを作ってた人が楽になるだけだよね
後はツクールを使ってた人が高度な実装知識無しで組めるようになるので
頑張ってツクールが担当してたエリアまで食い込んでくるかも
windows ≒ IE
XAML ≒ HTML
C# ≒ Javascript
こんな感じじゃない?
198 :
デフォルトの名無しさん :2010/01/26(火) 09:50:21
windows ≒ IE これより VM ≒ IE か
Imageに画像のセンタリングをやめさせる方法はありますか?
自己解決 VerticalAlignment, HorizontalAlignment 失礼しました
201 :
デフォルトの名無しさん :2010/01/26(火) 20:42:54
パラメータに複数のエレメントを渡したい時はどのようにすればいいのでしょうか? 例 <Button CommandParameter="ここで同xaml内にある複数のエレメントを渡したい"/>
>>201 こんな感じのデータクラスを作って
public class Hoge {
public int ID { get; set; }
public string Data { get; set; }
}
XAMLでHogeのアセンブリを参照
<Window x:Class="WpfApplication1.Window1"
xmlns:d="clr-namespace:WpfApplication1"
ほいさっさ
<Button ...
<ButtonBase.Content>Ok</ButtonBase.Content>
<ButtonBase.CommandParameter>
<d:Hoge ID="1" Data="AAAAAAAA"></d:Hoge>
</ButtonBase.CommandParameter>
</Button>
203 :
デフォルトの名無しさん :2010/01/26(火) 21:53:48
>>202 おぉ!これは素晴らしい!
ありがとう!
補足、作法にのっとるなら依存関係プロパティ public class Hoge : DependencyObject { public DependencyProperty IDProperty = DependencyProperty.Register("ID", typeof(int), typeof(Hoge)); public DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(string), typeof(Hoge)); public int ID { get { return (int)this.GetValue(IDProperty); } set { this.SetValue(IDProperty, value); } } public string Data { get { return (string)this.GetValue(DataProperty); } set { this.SetValue(DataProperty, value); } }} これでBindingが使えるようになる。 <d:Hoge ID="0" Data="{Binding Source=button1, XPath=Content}"/>
205 :
デフォルトの名無しさん :2010/01/26(火) 22:49:49
>>204 おぉぉ、なるほど!
Dependency関係がよくわからなかったけどこういう風に使うのか!
また一つ勉強になしました。
ありがとう!
206 :
デフォルトの名無しさん :2010/01/27(水) 10:21:45
そういえばGyaOがヤフーに行ってから動画配信がSilverLight使ってるんだが あんなに重いものかね? プログラム作る上でネットブックをスペックの下限の指標にしてるんだが 動画配信中はその他ウインドウのReDrawすらままならないんだが
OSを 書け
VisualStudio2008ProSP1(Silverlight3 Tools for VS2008SP1 -JPN導入済、OS:XP)で、 CompositeApplicationGuidance-Oct2009の以下のクイックスタート用ソリューションの プロジェクトのプロパティや、Resources.resxを開こうとすると、必ずVisualStudioが強制終了します。 (エラーメッセージやダイアログが一切表示されず突然落ちます。) 同じ現象にあった方や対処法をご存知の方、いらっしゃいませんか? 強制終了するソリューション(Desktop only - Open QS) ・Directory Lookup Modularity QuickStart ・View Injection QuickStart 強制終了せずプロジェクトのプロパティを表示できるソリューション ・Commanding QuickStart ・View Discovery QuickStart ・Hello World QuickStart ・Configuration Modularity QuickStart ・Commanding QuickStart
>>208 です
プロジェクト内にResources.resxがないことが原因のようです。
お騒がせしました。
WPFでWindowが閉じられる原因ってどうやったらわかりますか? WinFormsだとStackTrace使ったりFormClosingEventArgsにCloseReasonが あったんだけど、WPFでどうやったらいいか分からない
WndProc使うしか無いのか… ありがと
ChildFormのthis.DialogResultはViewに対する操作だからView側で処理して良いのかな? それともICommand等でバインドしてViewのコントロールをViewModelに渡すのが正しい作法?
×ChildForm ○ChildWindow
Modelを触らない操作だからViewでOK
216 :
デフォルトの名無しさん :2010/01/28(木) 21:34:09
同一ソリューション内の他のプロジェクトをclr-namespaceを使ってXAML内で参照すると"CLR名前空間が定義されていません"と警告が出ます。 コンパイルOK、実行も何も問題ないのでこの警告をやめさせたいのですが何か方法はありますか?
ラスターイメージ使ったら負けだろ それくらいベクトルで描けよ
219 :
デフォルトの名無しさん :2010/01/29(金) 10:08:13
>>217 WPFでそういうことをやろうとも思わなかったけど
DirectXでやれたようなことがむき出しになってるので
できないことはないだろうな
というかWPF使わなくてもVC#でも可能なレベルだろ
個人的にはそのアニメーションすらCPUパワーの無駄とか
思ってしまう
ぼく女子高生だけどそれはない
男子相撲部だけどごっつあんです
MVVMって流行だけどさ、 例えば、読み込むModelが複雑かつ長大な入れ子構造になっている様なとき、 ViewModelを作るコーディング時間と、実行時のコストって大変なものになると思うけど、 それでも分離しなくてはならないの?
>>226 テストによる品質保持にかかるコストがそれらを上回るなら。
ModelがINotifyPropertyChangedをしっかり実装してるなら、 そのままか同型のコピーをViewModelやViewに引き回しても問題ない。
最近はそれを見越して始めから依存関係プロパティ付けて実装することが多いな・・・
WPFはまだ仕事では使ってないけどみんなはどう?
当分縁がなさそう。 クライアントアプリを開発する案件がそもそも無いっす。
クライアントアプリを開発する人に聞いてるんだと思うよ
そういう人が居ないんじゃない?
よく”まだ”使ってませんって聞くけどいつになったら使う日が来るんですか?
VS2010、.NET4のbetaがとれたくらいか、 VS2010SP1、.NET4.5がでるころ
Win2kが根絶されるまでは無理ぽ
タブページとかXPで表示するとひどい目に遭うけどね
NT6が天下を取る頃
楽だから選択権があれば使ってるよ でも重いから客には嫌われてるみたい
directx9が満足に動かないビジネス機じゃ重いかもな
・・ということは私を含めみんな趣味レベルでWPFやってるってことか・・・。 主流になってくれとまでは言わんが、日の目を見ることなく自然消滅ということにはならんことを祈る
いや、趣味レベルでやってるのはあんただけだとおもうぞw
VS2010、Expression Encoder 3、Evernoteとかビジネスアプリの事例も増えてきてる
244 :
デフォルトの名無しさん :2010/02/05(金) 09:33:08
MDXやXNA臭がするのは事実
> XNA臭 するするwwww
わざわざageて自演ですか?
>>228 そこまでやったら、Modelを直接バインドしたいなw
エッセンシャルWPFのP324にあるTreeViewとHierarchicalDataTemplateの 例がさっぱり分かんねーーーーー。 Binding Path='.'ってなんぞ。
そこにバインドされているDataContext自体。
綺麗さよりもスピード重視したWPFがあればいいのに
DirectXで直接ゴリゴリやればいいじゃん
DirectXわかんない
WPFはバインドで動的にリフレクションの黒魔術で エロイムエッサイムしている時点でどうがんばっても速度は限界があるだsろ。
フレームワーク全体としてはともかく描画だけなら速くできるだろ そこ分離するためにDrawingみたいなちょっと低レベルなレイヤがあるんだから
>>247 そこまでやったら、俺のItemを美人Modelに直接バインドしたいなw
面白いと思って書いてるんだろうか
たくさんレス付いてると思ってわくわくしながらリロードしてるんだろな
少しつれた...
今時こんなレスでも釣れたって言うのか
十分大漁です(´・ω・`)
>>249 DataType="{x:Type io:DirectoryInfo}"で指定した型をコンバーターで返しているから、
返ってきたDirectoryInfo[]もHierarchicalDataTemplateの対象になってるってことですか?
IsExpandとかどう処理してんのか謎。
snipet
<UserControl.Resources>
<HierarchicalDataTemplate DataType="{x:Type io:DirectoryInfo}">
<HierarchicalDataTemplate.ItemsSource>
<Binding Path='.'>
<Binding.Converter>
<local:GetFileSystemInfoConveter />
</Binding.Converter>
</Binding>
</HierarchicalDataTemplate.ItemsSource>
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</UserControl.Resources>
<TreeView ItemsSource="{Binding}" />
> <HierarchicalDataTemplate DataType="{x:Type io:DirectoryInfo}"> > <HierarchicalDataTemplate.ItemsSource> > <Binding Path='.'> 型を返しているんじゃなくて、DataType=...は、「この型を表示要素に変換するDataTemplateだよ」と書いているだけ。 リソースに書いてあるデータテンプレートがあれば、明示的にデータテンプレートを書かなかった場合に その型のインスタンスをバインドしたときに自動的に適用される。 > 返ってきたDirectoryInfo[]もHierarchicalDataTemplateの対象になってるってことですか? このコンバータはDirectoryInfoから、IEnumerable<DirectoryInfo>に変換するのかな? ならば、上と同様に型が一致すれば適用される。あとは再帰的に。
>>262 後出しになってすいません。
コンバータはreturn ((DirectoryInfo)value).GetDirectories();です。
レスありがとうございます。理解が進みました。
VS2010RC出たね WPFは作る方は楽なんだろうけど 使う方から見ると悪夢だな
VS2010に関して言えばレンダリングにWPF使ってるだけなので WPFだから特に楽って事もないだろう
WPFでフリーソフト作ってるけどWinXPは動作保障外にしてる 間違ってないよね俺
フリーソフトで動作保証なんてあるんか?
フリーソフトなんだから好きにしたらいいよ
WPFを使っているとXPとVista/7で細かい部分で挙動が違うことがままあるからなぁ… XPを保証外ってのは賢明だな。
XPは臭いのか まあそれはいいとして確かにXP->Vistaでかなり変わってるからなあ
そろそろ保証外にしてもいいんじゃないの?フリーソフトなら。 仕事だとなかなかそうはいかんかもしれないけど。
>>266 VS2010で再変換が使えるようになったのはWPF採用のおかげだと思う。
再変換って?
え?
再変換って言われてもIMEの再変換くらいしか思いつかない
違うのか?
VS2010で再変換できるのがそんなにうれしいのかなと
WPFで、Silverlightアプリをホストできますか?
できるよ
codeplexにあったな
マウスクリックしてPopup表示するのどうすればいいんだ? 最初から表示させとくことしかできないの?
tooltipなのかダイアログかはっきり汁
Popupクラスだよ イベントハンドラかいて出来たけど
DataGridで右寄せにするにはどうすればいいですか? あるサイトにあった <Style x:Key="NumberColumnStyle" TargetType="{x:Type my:DataGridCell}"> <Setter Property="HorizontalAlignment" Value="Right" /> </Style> をそのまま書くとPropertyDescriptorの値が無効ですといわれてしまいます
・・・忘れてください
忘れられるもんか
あなたのことが忘れられないの///
俺が忘れさせてやるよ
金属バットで頭をバコーン☆! か
>>294 その辺はメモリやディスクの場所とCPU(GPU)の演算資源とのトレードオフだよ
どの段階でサムネイルを用意するかはソフト次第ってところだけど
たとえば3Dゲームなんかだとミップマップというのがそれっぽい
画像の管理かなあ
質問です。 画像読み込み用スレッドにて作成した System.Windows.Media.Imaging.BitmapImage クラスを、ウィンドウのある元スレッドにて使用したいのですが、 InvalidOperationException が発生し、動作しませんでした。 別のスレッドからWPFエレメントを操作しようとすると、 同様の例外が発生することから多分無理だろうと思っていましたがやはりダメでした。 読み込む画像のサイズが大きくそれなりに数があるので、 できれば読み込みは非同期で行いたいと思っております。 どのような解決方法がございますでしょうか?
>>296 BitmapImage読み込み後にFreezeすればスレッド間で共有できる筈
>>297 早速調べてみます、ありがとうございます!
>>297 無事成功しました。
操作したい場合はCloneで置き換えればよいみたいですね。
ありがとうございました。
最近WPF使ってるが、バインディングやらテンプレートのせいで ちょっと規模が大きくなってくるとコードの見通しが絶望的に悪くなってくる。 せっかくC#なのに・・・
そりゃ本来XAMLは人が読み書きするもんじゃないから
XAMLでプログラムとデザインや設定が綺麗に分離されたのは素晴らしいんだが WPFの本領を発揮しようとすると途端に至る所で色んな処理を書かなきゃいけなくなって死ぬ
XAMLはGridだけで充分
XAMLはエディタが全プロパティきっちり書けるようになってからが本領発揮だと思う。 いまはどうしても手で書き足さないとだめだもんな。 Expression Blendは使ったことないからわからない。
WPF Toolkit - February 2010 Release
Ratingってなーに?
iTun○sのアレ
・18歳未満使用禁止になりました とかだとは流石に思わなかった
WPF始めてサンプル作ってみたが、UI外観のカスタマイズやアニメーションがタグ要素だけでできて実行ファイルサイズも小さいんだな リソースどうなってん? XAMLがUI要素だけのための超高級言語っぽくて正直とっつきにくいが、日本語解説サイトもっと増えてくれー! ついでにasp.net使える無料スペースも増えてくりゃれ、ドメインはいらんのです
WPFは無くなると思うよ。 もともと.NET FrameworkにGUIアプリ向けのライブラリが混入してること自体が間違いだし、それをSilverlightで是正しようとしてるね。
えっ?
何それこわい
WPFは無くならん 何を勘違いしてるのか知らんが、.NETをはじめとしたMSの言語群は「短期間で高品質な生産」を行うためにある つまりアイデアが最も重要で、使い方を考えられない人間は価値を見いだせていないだけだ
なくならないだろうけど クライアントアプリはなんかどんどん微妙な立ち位置になってきてる気はするね。
WPFはGridだけ残るよ
Silverlightでもクライアントアプリ作れるし、将来的に完全にWPFに置き換わるようになっていくってこと。 WPFにある程度追いついてしまったらSilverlightの方が幅広く活用されるのはは当然です。 Gridありますし。
Silverlight も WPF も基本は一緒だもんな。
設計は全然違うけどな Silverlightの勝利はマネージコードの敗北です
>>320 >Silverlightでもクライアントアプリ作れるし、将来的に完全にWPFに置き換わるようになっていくってこと。
将来Visual Studioの実装がSilverlightで置き換えられるって? んなアホな。
Visual Studioの軽量版がSilverlightで実装されることはあるかもしれないが、
それは新規需要の開拓であって今のVisual Studioの置き換えでは無かろうよ。
Vistaを7で無かったことにするのと同じですよ
エッセンシャルの先頭10ページを読めばどうしてWPFが必要か理解できて、そんな寝言など出てこないはずなんだが キミがそう思うのは自由だがひとには話さないことだな
WPFで作られたアプリが起動しなくなった WPFじゃないアプリじゃこんなことなかったのに
釣針垂らすならもうちょっと頑張れよ…
>>314 gui用のライブラリが入ってるのが間違いとか、意味分からんわ。
view無しのフレームワークとかありえんだろ。ウェブのDOMも間違いとかいい出しそうだな。
>>325 先頭10ページを要約してよ。
→ 自分で買って読め
はいはい
そのへんの書籍がよくフリーでpdf公開されてたりするのも知らんのだろうな
URLも示さずに何言ってんのこの人。 エッセンシャルは公開*されてません*
SilverlightはUI周りの実装がなあ さすがにXAMLパーサまでアンマネージコードで実装するのはどうかと
立ち読みでもしてこいよ。おれはおまえのママじゃないんだから
WPFやってるやつならみんな持ってるよ。これしかまともな本がないからな。君はもってないのか? 笑う。
マトモとは思えないが、相対的にはマトモだなw
WPF詳しい奴本書いて出版しろよ 今ならベストセラー狙える
>>335 俺もってないけど?
普通はMSDNだのブログだので充分だと思うが。
WPF本は2年ぐらい前にここで教えてもらったAdam NathanのWPF UnleashedとエッセンシャルWPFしか読んでない。 最近はネットの情報も増えてきて随分過ごしやすくなったね。
本を所持してるだけでどんだけ高圧的になれるんだw
342 :
デフォルトの名無しさん :2010/03/06(土) 10:39:55
Programing WPFは良かったよ。Pro WPFはどうなんだろ。 日本語の本では、新しいのが出ないね。
WPF流行ってないからしかたない。 今使ってる層はWebから情報得たり英語ソースあたったりする層ぐらいじゃないの?
ランタイムで合ってると思うよ。
ないです
SilverlightのUIフレームワークはWPFに似せた全くの別物なので WPFと比べて削られてるって言うのはちょっと不適切だと思う .NET Frameworkと比べてSilverlightは機能が削られているというならわかるけど
Expressionの開発に携わってる人が、SilverlightはWPFのサブセットだって言ってたよ。
サブセットなめんな
silverlightがサブセットといってもWPFが完全な上位互換でも無いんだよね。 silverlightにあってWPFに無い機能もあって移植のときに困る。
じゃあどちらか無くした方がいいな
UI部分に関してはAPIは似てるけど実装が全く違うんだよな 他のところはだいたいそのまま.NETのコードを拝借しただけなんだけど
ようするにバカは使うなってことだ ユトリは大人しくオナニーでもしてろ
>>344 結局は面倒くさいからな
マイクロソフトのこの手の製品の癖として、何でも出来るようにさせるがために、全体の簡便さや明快さを犠牲にする。
作るソフトの特殊度・高機能度 低 中 高
要する労力 30 50 70
これを、 15 30 100
くらいの設計思想にしたっていいように思うがそうはしない。
ソフト制作の環境が昔と様々に違っている上、「また数年も経てば新プログラミング製品を出すんだろ?だとしたら過渡期のものをいちいち細かく研究してられるか。」感も強く、流行らないのも仕方ない。
おまえらのいうWPFってGUI記述マークアップのことじゃないのか
MS製の割には無駄に複雑な感があるよね Javaみたい
むしろMSの代名詞みたいなもんじゃないか>無駄に複雑
OLE/COM時代を通っている者ならば問題ない
無駄に複雑な方が色々金になるし。 あんまり簡単すぎるとうちらの仕事もなくなっちゃうよorz
依存プロパティ作るのめんどくさいからバインディングとかあまり使ってない
バインディング使わないとか勿体無すぎる
バインディングは使っても依存プロパティ自体あまり使わないと思うの
プロパティ型、プロパティ名、定義している型、初期値の4つを指定するだけじゃん 自動実装のプロパティと比べて2つも増えているのが面倒とか?
あとおまけでCLRラッパーも
依存関係プロパティは専用の構文とか用意すべきだったと思う。 正直くどい。
たしかにくどいけどC#全般がそういう言語だと思うことにした。 Visual Studio使っていれば、propdp[Tab][Tab]と叩くいて雛形を埋めるだけで出来上がるし。
スニペット必須なぐらいならいっそ #define みたいな仕掛け用意しときゃいいのにね。 不毛すぎる。
ツールヒントの表示の仕方も分からない
WPFはなくなるの? 答えはもちろんNO!
まあさすがに30年ぐらいしたらなくなってるとは思う。
375 :
デフォルトの名無しさん :2010/03/10(水) 15:30:32
COBOLは残ったんだよな・・・そう言われつつ
無くなると分かっている技術を習得しなければならないこともあるということさ
というよりSE/PGは(それに限らずどんな職業も)そういったくだらないその場限りの バッドノウハウをお客さんのかわりに網羅する仕事だもんな。 Oracle のあるバージョン特有のチューニング方法とかどう考えても10年後20年後に役立つ知識じゃない。
1日役に立てば十分だ
WPF は Silverlight 4 の INotifyDataErrorInfo みたいにコントロールに非同期でエラーを伝える方法ってないのかな? DataGrid で行の確定ごとにサーバーに問い合わせて、エラーを表示したいんだけど良い方法が分からない。
380 :
379 :2010/03/11(木) 22:13:56
自己解決した。 IDataErrorInfo と INotifyPropertyChanged を実装してエラー更新後に PropertyChanged 呼んでやれば良いだけだった。 PropertyChanged でエラー情報も拾ってくれるんだね。
VisualStudio2008 SP1 VC# 2008
WPF3.5 で開発しています。
[DllImport("user32.dll")]
public static extern bool SetProp(IntPtr hWnd, string lpString, IntPtr hData);
this.Loaded += new RoutedEventHandler(
delegate(object sender, RoutedEventArgs arg) {
var source = new WindowInteropHelper(this);
SetProp(source.Handle,
"MicrosoftTabletPenServiceProperty", new IntPtr(0x01000000));
}
);
によってマルチタッチを有効にし(これはMSDNのサンプルからも得られる知識です)、
Stylusイベントによってマルチタッチアプリを開発しています。
参考になるサイトは以下です。
ttp://blog.andreweichacker.com/2009/02/windows-7-multi-touch-using-wpf/ MSDNのサンプル、↑のブログ、その他海外のサイト、どこを見ても
StylusDown, Up によってタッチの有無を判定していますが、
StylusEnter, Leave を用いたものを見たことがありません。
試しに Enter, Leave のイベントを記述し、対応する関数内で
(たとえば)listBox1.Items.Insert(0, "Stylus Enter" + e.StylusDevice.ID);
などと記述すると、Enter, Leave は問題なく取得できています。
が、1本目の指で StylusEnter し、2本目の指をウィンドウ内にタッチすると
Enter, Leave が暴走します。
(※すみません、次のレスに続きます)
382 :
381 :2010/03/12(金) 21:09:20
(※続きです) window1 内に、Rectangle1, Rectangle2 を配置し、 線を太くし、それぞれに StylusDown, Up, Enter, Leave の関数を記述します。 各関数では、↑に貼ったURLのように StylusのIDで条件分岐し、 Rect1/2 どちらのイベントか、Down/Up/Enter/Leaveどのイベントか が分かるように、文字列として出力するとします。 ■試行1(Enter, Leaveのイベントを取らない場合) ・Rect1をタッチすると、"Rect1 Down 16" みたいに表示されます。 16はStylusDevice.IDの例です。 ・Rect1上から指を離すと、"Rect1 Up 16" みたいに表示されます。 ・Enter, Leave, Rect2の場合も同じです。 ・Rect1をタッチしながらRect2をタッチすると、"Rect1 Down 16" に続いて "Rect2 Down 17" みたいに表示されます。 続いて指を離すと、指に応じたIDが "Up" された表示が出ます。 ■試行2(Enter, Leaveのイベントを取る場合) ・Rect1の外をタッチして、Rect1の中にスライドさせると、"Rect1 Enter 16"みたいに表示。 ・そのままLeaveすると、"Rect1 Leave 16"みたいに表示。 ・Rect1に Enter した状態で、Rect1, Rect2 の外をタッチすると、 "Rect1 Leave 16", "Rect1 Enter 16" "Rect1 Leave 16" "Rect1 Enter 16" ... と、次々と表示されます。 ・Rect1に Enter した状態で、Rect2をタッチすると、 "R1 Leave 16" "R1 Enter 16" "R2 Leave 17" "R2 Enter 17" "R1 Enter 16" "R1 Leave 16" "R2 Enter 17"... と、次々と表示されます。 これが何故か分かる方、 また、この対処方法が分かる方はおりますでしょうか? 長文、申し訳ありませんがよろしくお願いします。
単純に「内部で単一のポイントとしてエンたーりーぶを計算している」ってことだろ。 間違っても「どうすればいいか」とかは聞かないでくれよ。
384 :
381 :2010/03/12(金) 21:33:23
>383 早速のレスありがとうございます。 Down, Up は同一のポイントとして計算はされず Enter, Leaveは同一として計算される ことが分かる情報があるということでしょうか。 Down, Up と Enter, Leave に大きな違いがある という情報にあたった経験がありません・・・。 よろしくお願いします。
きみが「こう実装されてるはずだ!」とどんだけ叫ぼうと帰ってきたイベントが答えだよ いいたいことがあるなら上司かMSにでも言え。俺に言うな。
386 :
381 :2010/03/13(土) 01:16:49
>>385 失礼しました。
>>383 がそういう意図とは取れませんでした。
業務内容とはことなりますが
SRで訊けるかとり合ってみます。
TreeViewのSelectedItemプロパティが読み取り専用のため、コード上で treeview.SelectedItem = item; のように指定できません。 例えばディレクトリ構成をツリー表示している場合、初期ディレクトリを開いて 選択状態にしたい時はどのようにしたらいいでしょうか?
普通に、IsSelected=trueするだけだろ
WPF M-V-VM Toolkit 0.1のドキュメント Model-View WPF Applications--Part 2, Walkthroughにおいて コマンド呼び出しにわざわざCommandReferenceを間にかませているのだけど これは何の意味があるのでしょうか? ViewModelのプロパティ名を記述する部分を一箇所にまとめるという意味はあると思いますが。。。 そもそもCommandReference自体が何をするためのもの?
391 :
390 :2010/03/20(土) 01:06:56
<KeyBinding Key="X" Modifiers="Control" Command="{StaticResource ExitCommandReference}" /> となってるところを <KeyBinding Key="X" Modifiers="Control" Command="{Binding ExitCommand}" /> こうしちゃえばいいじゃんと思ったら依存関係プロパティじゃないからバインドできないということなのね〜 StaticResourceでワンクッション置けばできる仕組みはなんとなくしか理解してないが バインドできない(Dependencyでない)プロパティ用の中継オブジェクトという認識で理解。
393 :
デフォルトの名無しさん :2010/03/20(土) 20:49:32
XAMLで書かれたベクタ画像を動的に読み込んで表示したいのですが、 どうしたらいいでしょうか?
XamlReader.Load
これでも動く。 [STAThread] static void Main(string[] args) { Application application = new Application(); application.StartupUri = new Uri(new FileInfo(args[0]).FullName); application.Run(); }
等幅フォントを列挙するにはどうしたら良いんでしょうか? Fonts.SystemFontFamilies で列挙できる FontFamily で等幅かプロポーショナルか 判断する方法ありますか?
OnClosingのタイミングで設定保存とか続行確認とかしたいので OnClosingとかOnLoadイベントにICommandをバインド?したいのですが どう書けばいいのですか? xamlに直接書けないのかな? イベントハンドラ作ってxaml.csにコードで書くのかな? できないことはないと思いますがぐぐっても情報が見つけられないです
398 :
397 :2010/03/22(月) 23:32:43
OnClosing とかポップアップは MVVM 的にすとんと落ちないらしいよね。 個人的には落ちない部分は大人しくコードビハインド書いたらいいのにとは思うけど。
ViewModel→Viewの操作でどうしてもバインドで書けないところは var service = (IWorkspaceService)this.Services.GetService(typeof(IWorkspaceService)); service.OpenWorkspace(HogeWorkspaceViewModel); みたいにしたらだいたいなんとかなるとおもう
402 :
デフォルトの名無しさん :2010/03/23(火) 16:22:41
WPF3.5でテキストがGDIに比べてぼやけた状態で描画されてしまう問題に対応しようとしています。 私なりに調べた結果、WPFの描画の際に論理座標で色を配置する仕様が原因であること、図形と画像については RenderOptionsのパラメータで解決させることができる。 ですがテキストに関しては解決させる方法が見つからないでいます。 WPF4.0から対応するといった内容のページも見つけましたが、なんとか解決させたいと思っています。 どなたか解決方法を教授願えませんでしょうか。
403 :
397 :2010/03/23(火) 17:04:58
>>402 WinFormsHost
敗北宣言に等しいけど
カスタムスタイルでレイアウトの入れ子が増えるとおかしくなる。
知らん XAMLくらい出せるだろ
あと、.NET 3.5のWPFでぼけたように見える原因の1つに埋込ビットマップをまったく使わないせいというのもある。 だからどうしたらいいと言えるわけではないけれど。
408 :
デフォルトの名無しさん :2010/03/23(火) 22:51:45
VS2010RC, WPF4.0 を使っているのだが、 Win32におけるWM_GESTUREみたいなもので Gestureイベントってあるのかな? zoomとかrotateとか簡単に取得できると 良いのだが。
WPF マルチタッチ でググる
>>409 それで解答が得られたのであれば
本気で教えて欲しい。
どうせ「WPF マルチタッチ」でググったことないんだろ?
411 :
410 :2010/03/23(火) 23:38:39
>>409 正直スマンかった。
最近、海外のサイトばかり回っていたのだが
日本のサイトでもWPF4.0について書かれているサイトが
少しずつ増えているんだな。
これXPには対応していない部分とかあるの? XP用に開発するのは無謀?
XPだとなんか重いし、見た目もいまいちだし。 俺はもうXPはサポート外でやろうと思ってるくらいだ。
WPF初めて触って面白そうと思ったんですが(まだハローワールドしかやってないんですが)そんなにはやってないんですか XPだと表示が微妙なんでしょうか?
Silverlight使えば? Silverlight4ならブラウザ外実行の普通のデスクトップアプリケーションとして CDなどで直接配布できるよ
>>414 微妙っていうか重いってのが一番のネックかと。
今のところ、WPF でやってみました!!なんてのが売りになるぐらい流行ってないと思う。
少なくとも国内では。
WindowsFormで作られたC#アプリを 簡単にWPFのGUIに移行できる? 簡単に言うとform1だけwindows1にするだけで 作り変えられるのか?ってとこが疑問なんだけど このGUIで非同期とか実現できるのかなー
新しい概念が登場しすぎで全体像把握すんのが大変 昔の素朴なイベントキューアーキテクチャって一目で理解できたもんな それってある意味ではすごい
>>417 ならない
細かいところで変わってるから
>>417 > form1だけwindows1にするだけで作り変えられるのか?
一応WinFormとの相互運用性は確保されてるが、
Windowに直接System.Windows.Forms.Controlは乗せられないから多少手間が必要
しかしそれ以前にそもそもWPF使う意味皆無だろそんなもん
> このGUIで非同期とか実現できるのかなー
意味分からん
>>416 重いんですか、残念
こういうの待ってたんだけどなぁ
Silverlightってwikipedia見る限りWPFと同じなのかな??は調べてやってみまする
XPだと重いってどういうことよ? プラットフォームに依存しないんじゃないの?
同じPC/AT互換プラットフォームなら全て同じ性能出せと言いたいのか
424 :
デフォルトの名無しさん :2010/03/24(水) 23:41:04
>>422 GUI周りの構造の問題じゃないの?
試してないけどもしかするとvistaのAero切ったらだめってのと同じかもね
まあSilverlightなら軽いし確実に同じ外観と操作性を実現できるもんなあ
426 :
デフォルトの名無しさん :2010/03/24(水) 23:43:42
vista以降ってOSのGUI周りがゲームと変わらないといっても過言じゃないくらい GPUと融合果たしてるけど、xpまでは2Dが基本なのでWPFだといろいろ 無駄がありそうってイメージ
細かい違いはあるけど Silverlight 覚えるのも WPF 覚えるのも大差ないような気はするよね。
Expression Blend 3をダウンロードしてみたんだが UIがめっちゃオサレですね でも使い方が全然わからん ほんとにデザイナさんこんなの使えるの???
flashでas3やってるデザイナなら使えると思う
体を使う技はデザイナでも訓練しなければ云々
>>426 OSはあんまり関係ないよ
WPFは基本的にウィンドウ内で完結してるのでほんとにゲームと全く変わらない
描画システムが違うって点でOS関係あるんじゃないの?
XPがWDDM1.1に対応してないという点では関係ある ウインドウの中身をdirectxで書いてるという点では関係ない
XPだとGPU支援が得られず、CPU負荷が大きい。 なのでOSは思いっきり関係ある。
それ迷信 単なるゲームだと何度言ったら
XPでGPUアクセラレーションが効かないっていう噂の発端は XPでは透明ウィンドウがソフトウェア処理されていたこと .NET3.5ではXPでも透明ウィンドウにGPUが効くようになった
なるほど。 3.5以降ターゲットで作ればVista以降と比べて遅いってことはなくなるのか。
3.5のせいでウィンドウフックするタイプのソフトは全部使えなくなったわ
439 :
デフォルトの名無しさん :2010/03/27(土) 01:22:15
WPF3.5 SP1 です。 イラレで描いた絵をXAML形式で吐いて WPFに配置することはできますが、 以下のことは可能でしょうか? ・座標 (a, b) を設定する ・ボタンを押す ・指定した座標に、イラレで描いた絵を配置する たとえば、ある canvas に対する相対位置 (a, b) に XAML形式のものを配置するということを、C#のコードで 実現することは出来るのでしょうか?
できるとしか答えられない
>>440 *.cs からイラレxamlって生成できるの?
どうやんの?
どうやるかは分からないが 労力を無視すれば どんなことであれ不可能ではないだろう
>>439 XamlReaderでXAMLを読み込んでXAMLのルート要素の型(IllustratorならたぶんCanvas)にキャスト
Canvas.SetLeftとCanvas.SetTopで位置を設定
配置されてるCanvasのChildrenに追加
あるいはC#で静的にXAMLファイルを書きかえる
>>442 〜でできますかという言い方をすれば俺ならこうやってできるぜ
という人が必ず現れるので労力は無視できる。
「◯◯って××も出来ないんだね→ばーかばーか、△△で出来るっつーの」メソッドと、 「◯◯ってどうやるんでしょう?→△△で出来ますよ(嘘自演)→アホ、□□だ情弱」メソッドもあるでよ。
もはやそのメソッドも使い古されて「△△で」「□□だ」は書かれない傾向が
450 :
439 :2010/03/27(土) 22:09:58
>>443 ありがとうございます。
そのプラグインで生成したxamlを *.cs.xaml に記述するのではなく
*.cs の中から生成したいのです。
>>444 ありがとうございます。
今、外出中なので帰宅したらやってみます。
また、いただいた情報から更に調べてみます。
>>445 ありがとうございます。
検索の手がかりになるキーワードだけでも
教えていただけないでしょうか。
WPF覚える前に検索方法覚えたほうがいいんじゃね 検索キーワード聞かなきゃ検索できないとか冗談にもならないレベルだよ
いやいや何言ってんだ・・・キーワード知らなきゃ検索出来んだろ普通。
google入門とか読めよ。 簡単に言うと、自分が思いつくいちばん近いキーワードで検索してページを読んで もっと近そうなキーワードを見つけていくんだよ。誰でもできるだろ? やれ。
455 :
439 :2010/03/28(日) 14:13:30
ネットはテレホーダイの時代以前から触っているので
それなりに検索術はあると思っていますが
皆さんの反応を見る限り、そうではなかったようです。
>>454 氏の書き込んでいることはもはや当然のことで、
かれこれ3週間MSDNやらcode projectやらブログやらを
探っていますが、解に到達できていません。
その上で質問に来ています。
が、経験上、この流れになったが最後、
これ以上の情報をこのスレで得ることは困難なため
大人しく身を引きます。ありがとうございました。
>>453 遊びではありません。
傲慢過ぎワラタ こんな捨て台詞数年ぶりに見たわ
457 :
デフォルトの名無しさん :2010/03/28(日) 16:01:23
そうか?俺も他スレで同じ経験すること多いぞ 技術的な他分野ってこんなもんだろ
無駄にプライド高いのに教えを乞うからだよ。 希望の機能ならライブラリにメソッドがちゃんと用意されてるよ。 遊びじゃないなら3週間給料泥棒だったね。
今質問すると、ググレカスで一蹴されそうだが width, height を Auto にして Stretch にすると たとえば Name="canvas1"のCanvasに対して int w = (int)(canvas1.Width); としても w に変な値が入ってしまう。 // HeightとWidthはあくまで開発者がデザイン時に設定した値 ということは分かったのだが、 ではどうやって値を取得するのかが分からん。 canvas1.RenderSize.Width canvas1.ActualWidth とか調べても分からん。 windowサイズの拡縮に合わせて変化する canvas の 縦横を取得するにはどうすれば良いの? # VC#2008, WPF3.5SP1
ActualWidth/ActualHeightでいいはずだが? 「調べても分からん」?「確認したけど期待した値じゃない」じゃなくて?
計算される前に呼んでるんだろ
462 :
459 :2010/03/28(日) 16:20:36
>>460 >「確認したけど期待した値じゃない」じゃなくて?
そうでした。すまん。
なんか 0 が返ってくる。
>>461 ・・・ビンゴな気がする。
Invalidatなんたらを実行してからとか
そんなのですかね。色々試してみる。
お二方ありがとうノシ
ggrks
464 :
459 :2010/03/28(日) 16:42:19
何を血迷ったか、WinMain() の中で呼んでいたよ orz Window_Loaded() の中で呼んだら、期待した値が来ました。 本当にありがとうございました。
おまえら質問のしかたで反応が違いすぎ
いや普通そうだろ
私は女子中学生だけどそれが普通だと思います。
「自分のしたいことが明確にわかっている」のが質問の最低条件だから。 ここコミュ力試験に出るよ。
エスパーじゃないからな でも初めてのことだとたまにエスパーして欲しいことはあるな そういうときは答えをもらおうとせずもらえそうなところに愚痴っておくといい たまーにヒントがもらえるから
>>470 あと「回答すべきことを明確に伝えれる」「必要なことは書き余分なことは書かない」も重要。
「ネットはテレホーダイの時代以前から触っているので」とか
歯に詰まったクラッカーのカスほどの価値もないことを書いて
自分が調べたキーワードがどういうものかもかかない奴には当然冷たい。
しかしネットで難解なドキュメントやマニアックなブログ見るよりも ビギナー向けのXAML入門書読んだほうが早いような気もするが
普段、難解なことを扱っているんだろ。 入門書で分かるレベルのことであっても いつも通りの調べ方をしてしまったんだろな。 それ故にプライドも高い。
スレチ
WPFで、マウスポインタがディスプレイの端を触った時に 発生するイベントってありますか? 現状では、以下の2通りの方法で何とか実現していますが 美しくありません。 1) DispathderTimer を使う ・ System.Windows.Forms を参照 ・ timer で定期的に呼ばれる関数内で Cursor.Position.X, Y を取得し 予め取得しておいた、解像度の情報と X, Y を比較して判定 問題点:タイマーを設けることで常に関数が呼ばれることになる 2) 透明の Rectangle などを置いて、MouseEnter で判定 ・そのままです。 問題点:問題と言うか、美しくないです。 もしあるようでしたら、ご教授願いたいです。 よろしくお願いします。
2)は美しくなくない
481 :
478 :2010/03/28(日) 21:11:57
>>479 美しくなくないですか。
例えば市場に出すアプリを組んでいるプロ?の方でも
こういった力技で解決するのでしょうか。
>>480 あぁーなるほど。MouseMoveですか。盲点でした。
座標比較が頻繁に行われることに違いはありませんが、
timerよりかは遥かに良い方法ですね。
以下、つぶやきです。
1)の方法でも、OSは定期的に MouseEnter しているのか
判定しているのでしょうかね。それなら1)も2)も処理量は
大差ないかもしれません。が、仮定の話なので無駄ですね。
マウスポインタがある領域に入ったってイベントが欲しいわけでしょ 正しい実装じゃん 力技じゃない
タイマで処理するにしてもそれぐらいカスみたいなコスト
484 :
478 :2010/03/28(日) 21:21:56
>>482 なるほど、考えを改めます。
ありがとうございました。
Blendでコードビハインドべったりで書いていくと簡単だったりするんだよなwpf 昔のVBと大して変わんないってくらい
macで使われてるGUIのボタンってなんっていいましたっけ・・・ あれを再現は可能ですか?
Dockか? そりゃWPFはまさにああいうことをやるためのフレームワークだから
aquaのことじゃないの
ボタンの見栄えを自由にするなんてのはお手のもんでしょうな。 別にFormで出来なかったわけでもないけど。
WPF Themesにいろいろ綺麗なテーマがあるよ Macの真似みたいな貧乏臭いことはやめてくれ
491 :
デフォルトの名無しさん :2010/03/31(水) 22:27:14
WPFで3Dグラフィックの仕事をやることになったんだが、皆目見当がつきません。 何か良い本は無いでしょうか。
まずは、Essential WPF。後は英語でググレ。
そんなもん読んでるに決まってるだろ。 他に無いでしょうか。
だれか何かを挙げる→そんなもん読んでるに決まってるだろ→ だれか何かを挙げる→そんなもん読んでるに決まってるだろ→ だれか何かを挙げる→そんなもん読んでるに決まってるだろ→(ry まぁ、挙げるだけ無駄ってことだなw
返答してる人が同一人物である保証すらないしな。
idほしいお・・・
3D PROGRAMMING FOR WINDOWS
WPF 3Dプログラミング―誰でも簡単に3Dゲームやツールが作れる最新技術!
WPFによる3Dプログラミングの極意 (民明書房)
質問かいてたら答えが見つかったけどもったいないのカキコ HTMLのMarquee的な動作をするテキストブロックを作ろうと <Canvas> <TextBlock 〜> </Canvas> としておいて、 下記のように添付プロパティのCanvas.Leftをアニメーションさせています。 <Storyboard x:Key="test" RepeatBehavior="Forever"> <DoubleAnimation From="1" To="100" Duration="0:0:10" Storyboard.TargetName="textBlock1" Storyboard.TargetProperty="(Canvas.Left)"/> <!-- ←なんで括弧が必要? --> </Storyboard> 括弧がなぜ必要なのか教えてください。 ひょっとして拡張部分のそういう仕様ですか? ↓ 仕様でした><
GJ
Canvas canvas1 Ellipse elli1, elli2 ああるとして canvas1.Children.Add(elli1); canvas1.Children.Add(elli2); とした後に elli2 だけ Clear することってどうやれば良いんですか?
Remove
>>503 あ・・・ありがとう。
なんで見つからなかったんだろう。
>>491 Practical WPF Graphics Programming
この本なんかはどう?
最近Freeに影響されたかバラ撒くとこ増えたねえ。 それとも欧米では結構昔からこういうことするとこ多かったのかな?
ローマ字変数名しか使えない俺には無用
少なくともWPFに関する本はほぼすべてネットで拾えてしまうからなあ。 実に由々しき事態だ。(棒)
ちょっと目を通してみたけどWPFの本というよりグラフィックスの基礎の本だなあ 普通は可視化にOpenGLとか使うところをたまたまWPF使ってるだけな感じ
511 :
デフォルトの名無しさん :2010/04/04(日) 22:14:21
>>512 ありがとうございます。
その質問+解答も見ていましたが
やはりその方法しかないみたいですね。
まずはWinFormで作ってみてから
WPFに応用してみます。
※Animationを使いたいので、WPFのが良いんです。
514 :
デフォルトの名無しさん :2010/04/06(火) 00:11:32
BeginAnimationって、 「さーアニメってこい!」 ってゴーサイン出すだけじゃん? FromからToまで行き終わったときに 何か処理して欲しい場合って どうすれば良いの? FinishedAnimationとかあれば良いのに。
completedイベントなかったっけ
もうexpression4が出るのか・・・まあ出るわな なにが変わるのかわかる資料が全然見当たんないなー
まだ出ないんじゃない?
無料あぷでは確定です
Focus()して成功する条件って何でしょう? キーボードフォーカスをそのエレメントに移動できなければfalse、ってのは分かるのですが そもそもキーボードフォーカスを移動できる条件って何でしょうか?
ウインドウの初期化が終わる前にコントロール関連のメソッドを呼ぶなと
521 :
514 :2010/04/11(日) 15:59:49
>>515 おそくなりましたが
ありがとうございました。
>>520 CheckBoxのIsCheckedをTrueにしてると、初期化中にチェックイベントが実行されたりするあれ?
Expression BlendとかWPFで作られたソフトが起動しなくなった
環境壊れてるんじゃないか
525 :
デフォルトの名無しさん :2010/04/13(火) 21:48:30
趣味でWPFで3Dモデリングツールを作ろうとしてるんだけど、OpenGLとかDirectXでやった方が幸せかな? ざっくりした質問で悪いけど、皆さんWPFの3Dって総合的にどう評価してます?
>>525 「wpf direct3d 制約」でググるいいよ。
正直、WPFの3Dっておまけ機能だと思ってるけど。
UIはWPFで3DビューはD3DImage+MDX/SlimDXくらいが現実的なんじゃね
528 :
デフォルトの名無しさん :2010/04/14(水) 13:52:27
めちゃめちゃ頭のいい人 ただ、凡人の限界を知らなかったらしい
530 :
デフォルトの名無しさん :2010/04/14(水) 14:02:34
100円の和菓子1つを10万円の箱に入れてるようなもんだな
ツールの使用を前提にしてるよなぁ〜
ワロタ Xamlコードを出力するツールをまず自作しなきゃな。 blend?高いしイラネ
コードで計算してジオメトリ作ってxamlで書き出すんだよ? まあなんとかいうモデリングソフトで書いてxaml出力してもいいけどね
>>528 > 2 次元から抜け出そう
心にぐさりと来ました
まだ入り込めてもいないのに
まあ普通はツールで出力するだろ そのためのXMLだ
537 :
デフォルトの名無しさん :2010/04/14(水) 20:15:00
WPFの3Dって、モデリングツール(DirectX)で画像処理ー>XAMLフォーマットで出力という使い方を想定してんじゃねえの? わざわざ手かせ足かせを嵌めて走る意味はなかろう。
538 :
デフォルトの名無しさん :2010/04/14(水) 20:59:43
Visual Studio 2010 + WPF4.0 を使っている方は少ないと思いますが、 「これが原因じゃない?」程度でも構いませんので 何か思い当たることがありましたら、お願いします。 ■質問内容 以下の2つの方法で、挙動がことなります。 1) xmalで Button を配置して Click イベントを与えたもの 2) csファイルに Button b = new Button(); b.Click += new RoutedEventHandler(hoge); として Click イベントを与えたもの ■挙動 1) Win7+タッチ対応ディスプレイにて、タッチでも Click が反応します 2) Win7+タッチ対応ディスプレイにて、タッチでは Click が反応しません ButtonをManipulationで操作したいため、TouchUp などは使えません。 ボタンの Click イベントを 2) の方法で生成した Button に対して適用したい のですが、どのようにしたら良いかアイデアが思いつく方、お願いいたします。
MouseMoveとか他のイベント捕まえてみたら?
MouseMoveですか? ManipulationではなくMouseMoveで 操作しろということでしょうか?
WPFってなんでこんなもっさりしてんの? Direct3Dとか少ししか触ってないので見当違いなこと言ってたらすまん。 1.UIElementツリー 2.Direct3DのVertexBufferとかMesh 3.実際の出力 WPFは主に1の画面要素自体とイベントなどのハンドリング、状態通知でごにょごにょとなどとそれらを2に反映させるものだと思ってるんだが、 1自体が重いのか1から2への変換などが重いのか? 2,3とかは高速なんだろうし、現状では削りようのないところなんだろうけれど。 たとえば画面のボタンの背景色を変えた場合は内部でどんな動作になるんざんしょ。
普通に1だろ ちなみに1と2の間にはもう一つ層がある Direct3DをGUI向けにラップしたネイティブコードのライブラリを使ってる
もっさりっていうならまずスペック更科よ
ゲーム作成にWPFを使いたいんですが、文献が少なくて困ってます。 オススメの文献とかありませんか?
ゲームってジャンルくらい書きなよ
WPFの文献だと日本語のはエッセンシャルWPFぐらいしかないんだっけかね?
失礼しました。2Dで、ベクター画像を用いた格闘ゲームです。 ですが、格闘ゲームに限らず、 WPFでのゲームプログラミングの情報自体が見つけられなかったので、 ほかのジャンルの情報でも充分助かります。
ギャルゲーくらいですよこれ。 ギャルゲーでビデオカード要求とかあり得ないんでギャルゲーでは主流になってもいいと思います。
WPFは基本的にビデオカード要求だけど
>>547 「エッセンシャル WPF」
「XAML プログラミング WPFアプリケーションの概要と開発」
このスレではこの2冊がそこそこ評判が良かった。
もし英語に抵抗が無ければ出版数が多い洋書で探した方が良いかと。
個人的には書籍じゃないけどMSDNのサンプルが一番役に立ったよ。
WPFでゲームを作ってる人は少ないだろうなあ。
DirectXかXNAを使った方が良いと思うんだけど。
google booksでwpf検索してみたら だいたい用は足りると思う
552 :
デフォルトの名無しさん :2010/04/16(金) 00:11:31
Imageを持ったButtonのUserControlをXAMLで書いておいて、コード内で生成
>ということをXMALではなくC#のコードから実現したいです。 そうですか >質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。 そうですか >XAMLではなくC#から生成したいのです。 そうですか >画像の情報も動的に取得するので、画像もC#で生成したいです。 そうですか >ググってもXAMLの話ばかりです。よろしくお願いします。 なにをよろしくですか
ちなみに 38526の回答以外のなにものでもないよ 質問内容を理解しないんじゃなくて、回答読んでも理解できない脳みそを恨め
>>554 中身の無いレスだな
お前みたいなのは来なくて良いよ
>>556 これがどれだけ程度の低い質問かわかんないってことは本人だろうな・・・
558 :
552 :2010/04/16(金) 02:19:45
>>553 ありがとうございます。
UserControlなるものを使ったことが無いので
早速調べてみます。
>>554-555 38526がコードの話をしていることは分かっています。
>XAMLの話をする回答者が多いみたいですが。
と書いているのは、それを示しています。
38526の回等と
>>553 氏のレスが同値だと分かるレスを
していただき、ありがとうございます。
>>556 555のレスから得たことがありますので大丈夫です。
>>557 552は私です。
UserControlの話など、もっと汎用的な調べ方をすれば
沢山情報が得られるのかもしれませんが、具体的な事例が
あまりないというのは、それだけ壊滅的なほどに初歩的ということなのですね。
もっと勉強します。ありがとうございました。
>>557 は?程度の低さは関係ないだろ
どれだけ馬鹿なんだよ
>>558 違うよ
ButtonオブジェクトのContentプロパティにImageオブジェクト突っ込めばいいだけ
>>559 はいはい
お前が気の済むように回答してやれよ
>>561 >はいはい
え?マジで分かってないの?
こりゃ重症だな。関わらないでおくよ。
>お前が気の済むように回答してやれよ
うわーまいったねこりゃ。
既に解答が出ているのに更に回答しろと?
別の機会に謹んで回答させていただきますw
564 :
558 :2010/04/16(金) 02:55:46
>>560 お恥ずかしいです。ありがとうございます。
質問をする前にスレを見返していましたが、
人を馬鹿にするレスしかしない人が多い中、
あきれずに回答していただきありがとうございました。
横着せずにWPF入門書を最初から読んでいけばコントロールの追加方法なんて最初にかいてある。 なんで未知の言語なのにチュートリアルすっとばそうとするかな。 別にすっとばしてもいいけどひとりで悩んでくれよ。ひとのせいにすんな。
これだからIDの無い板は。
>>565 おおむね同意だが
>ひとのせいにすんな。
これってどこを見て感じたことなんだ?
なぜこう感じたのか、俺には全く分からんのだが。
ああでも3->4のアップグレードは全員無料なのか
スレ伸びてるから WinSDK 7.1 でも出たのかと思ったら・・・
>>552 >質問内容を理解しないでXAMLの話をする回答者が多いみたいですが。
XAML ←→ C#コード なんか、ボタンやイメージどうこう以前に WPF の基礎だから。
自分の無知を棚上げに「理解しないで」などと回答者をアホ扱いするから荒れる訳。
「M女史の遺したもの」を一回は読んでおくといいよ。
public Window1()
{
InitializeComponent();
this.Content = new Button { Content = new Image { Source = new BitmapImage(new Uri("c:\\image\\test.bmp", UriKind.Absolute)) } };
}
「.netなんて池沼にもできる障碍者用言語だろ余裕だよ。入門書?そんなもん小学生にでも読ませとけ」 →「はー?なんでうごかねーんだよこの欠陥言語。おいくずどもどうなってるか説明しろ!」 ようするにこういう思考だろ。 「なんでおれがこんな低レベル言語にてこずらなきゃならないんだよ」みたいな 雰囲気ぷんぷんさせながら質問するとか鼻で笑うわ
> ボタンの中に画像を置く > ということをXMALではなくC#のコードから実現したいです。 キチ○イwww
>>570 へーこんな書き方できるんだ
はじめて知った。
>>571 お前みたいに"決め付ける"人って
大抵・・・
WPFで「コードから動的にボタンを配置したい」ということ自体めったに無いよね WinFormsでそうやってたようなことはアイテムテンプレート使えばだいたいXAMLだけで完結する
アイテムテンプレートでできるけどある条件の時はこっちとかするのも含めてコードで書いちゃった方が好きかなー
XAMLって「データ言語」っていうんだっけ。 プロパティの指定はXAMLコードから判るが、メンバの設定は何度読んでも混乱する。
Rectangleを20個ほど一気にAnimationさせると Core2 E7400 + GeForce9400GT でも若干ガクガクするんだけど WPFってそんなもんなの? それとも、うまい書き方があるの? RectangleはXAMLで配置して、AnimationはC#内で書いてるんだけど。
描画だけでよければDrawingVisual使ってみたら 間違ってもDrawingContextは使わないように
579 :
577 :2010/04/19(月) 23:12:18
>>578 ありがとう、調べてみた。
これってアニメーションできないように思うんだけど
そんなことないの?
イベントとかは使わないから描画だけといえばそうなんだけど。
20個(できればそれ以上)のRectangle、長い長方形をぐるぐる回したいんだよね。
風車がたくさん立っているイメージ。
オブジェクトの重なりが多いほど重くなる
CPUでピクセルの合成してるんだっけ? そういうのはGPUが得意なんだがな・・・
WPFのウインドウ内部は全部directxで書いてるって何回書いたらわかるんだよ けちらずエッセンシャル買え
>>579 その程度のアニメーションなら普通にStoryboardじゃいかんの?
描画じゃなくてレイアウトとか入力とか高次の部分で引っかかってるんだろ RenderTransform使ってみるとか
みんなRelayCommandとDelegateCommandのどちらを使ってる?
使うも何も両方ともただのサンプルでしょ 必要に応じて自分で作るんだよ
他人に説明するとき、アレと一緒で済むから楽じゃん。
というか RelayCommand でも DelegateCommand でもどっちでもいいけど 標準で用意しときゃいいのにとはおもったわ。
だってMとVMはWPFと関係ないじゃん
依存プロパティではCLRラッパーが使えて、添付プロパティでは 使えないのはどうして? MSDNでは「WPF の添付プロパティには、get および set のアクセスを容易にするための 標準的な CLR "ラッパー" メソッドはありません。 これは、添付プロパティが設定されたインスタンスの CLR 名前空間に、 その添付プロパティが属しているとは限らないからです。」 って書いてあったけど。つまり・・・どういうことだってばよ
自分自身のプロパティじゃなくて他のオブジェクトに設定するプロパティだから プロパティ構文じゃ書けないよってこと
たとえばCanvasのLeft添付プロパティはCavnasクラスに定義されたプロパティだけど そのプロパティの値を実際に持つのはCanvasの中に追加する他のクラスのインスタンスだろ CLRプロパティではプロパティが定義されてるクラスとその値を持つインスタンスのクラスは必ず一致するけど 添付プロパティでは一致しないからCLRプロパティでは表現できない
でも、アクセスする構文ってCanvas.Leftみたいに[クラス名].[プロパティ名]でしょ。 ラッパーを静的にする必要はあるけど、コードからでも普通に使えそうだけどなあ。
だからCanvas.SetLeftメソッドがあるだろ
「どのオブジェクトの」Canvas.Leftなのよ? ということになって結局Canvas.GetLeft(obj)で十全だろ、分かりやすいし
設定を行うインスタンスを知る必要がある(引数として送る)からラッパーでは出来ないってことか なっとく
Obj.Canvas.Left とかならまだわかる
Obj[Canvas.Left]だな
DependencyObjectにthis[DependencyProperty]を定義すると obj[Canvas.LeftProperty]にせざるを得ないからなぁ objectでしか扱えないし それ以上は言語の方に手を入れなきゃなんなくなる いや、dynamicでなんとかなる・・・か? しないで良いけど
WPF は結局ユーザーの要求するパフォーマンスに達しなかったね。
自分が使いこなせないからってひとも同じだと思う人って…
BlendとかXamlPadみたいにリアルタイムでXamlの内容を表示するのってどうやるの?
>604 それリアルタイムでの編集内容反映は入ってないよね?
>>604 おー、意外にシンプルでびっくり。さんくす
>>605 更新タイミングは工夫次第でいけそう。
テキスト変更イベントのたんびにパースするとかね。
あるWindow window1 があって、 window1の中のある領域に X を配置して、 その X の中を右方向にアニメーションさせた場合、 X の右端がXの左端にくっついたように ずっと X がループされてスライドするアニメーションって どうやったらできますか? ここで X とは、CanvasでもPageでも何でもよいので、 ボタンとかラジオボタンとかが配置できる領域のことです。 説明が難しいのですが、例えば window1 に電車を描き、 電車の窓から X (外の景色) を眺めているとし、外の景色が ずっとスライドしていく感じです。 このとき、X に動的に「電柱」の絵を置いたら、ループ絵として 次に現れる X にも「電柱」が存在するように見せたいです。
はじっこにきたら座標もどせばいいだけじゃないの?
一番手抜きだと1枚の画像を座標変えて常に2回表示すればいいだけだろ
>>609 ありがとうございます。ですが、それだと絵が切れてしまいます。
窓の大きさが X と同じで、動かす絵が X の場合、
X を右にスライドさせると、Xの左側が空白になります。
X1 X2 と Xを並べて、X2がXの領域からはずれたら X1 の左に
配置するようにすれば実現できますが、そうすると X1 と X2 が
同じものになりません。X1に電柱が追加されたらX2にも追加、となると
処理が重たくなりますので・・・。
>>610 ありがとうございます。
そちらの方法で、チカチカさせない方法があるのでしょうか??
>>611 まあ
>>610 の方法はゲームの一般的なループの作り方なだけで
そのまんまはだめかもしれないけどねw
なるべく再利用した方がいいかと思って
>>610 として書いたけど
ちらついたりするならとりあえずは1つのファイルを内部で2つ同じものを作って
とかはだめ?
それでもうまくいかないならとりあえずは読み込む画像その物を 同じ物を2枚並べた横長で作っておいて座標で調整するか
expressionの4にMVVMのプロジェクトテンプレートが入るみたいね これが標準のフレームワークってことになんのかしら
>>612-613 やはり冗長な部分を作って
必要な部分だけ見せるのが手っ取り早いみたいですね。
なるべくなら再利用したいのですが、ひとまず↑でやってみます。
では、失礼します。
>>616-617 おぉ、このようなものもあるのですね。
寝る前に見て良かったです。
ざざっと調べてみたのですが、こちらの方法では
画像を複製表示することはできるようですが、
Buttonなどが配置されたPage(を配置したFrameなど)を
複製表示させることはできないみたいですね。
(調べ方が甘かったらすみません)
教えていただいた TileMode で絵を複製して、
Buttonなどは自分で複数配置する方法も検討してみます。
619 :
618 :2010/04/23(金) 00:55:24
度々書き込み失礼します。 TileMode から色々と調べてみましたが、 Canvas Neme="canvas1" にボタンなどを配置し、 <Rectangle ... > <Rectangle.Fill> <VirualBrush Visual={Binling element=canvas1}" /> </Rectangle.Fill> </Rectangle> とすると、一応 Button なども複製されますね。 しかし(当然ですが)複製された絵の Button は操作できませんね。 残念です。
スライドしてる状態でボタンなどを操作する必要も無いだろうから、 動いてないときは普通に表示して、 スライド中だけVirtualBrushに入れ替えればいいんじゃない。
スライドといってもゆっくりのものでして 移動中でもクリックに反応して欲しいんです。
その手のは一枚絵としてスクロールさせるというよりも同サイズでスライスした要素みたいに考えて クリッピングと組み合わせて実現するのが常套じゃないのかな
プログラムなんてプリミティブなアイデアの集合体なんだから 自分ですこしは考えなよ
>>623 そういうことは2ch言ってもしかたないと思うんだぜ
>>623 >>619 では「考えている」認定されないのか。
2chって厳しいインターネットなんだなw
二度手間でもエレガントじゃなくても冗長でも、数学的な問題じゃない限り 自分の望むことをコードにすることはできるだろう、諦める=考えてない、ってことさ
richtextboxで行間を指定する方法はない? LineHightやMarginを試してみても変わらなかった
nyuryuが言っていたが、WPFでもすべての部分にDirectXを使っているわけではないらしい。
>>627 WPFじゃなくてWinFormのでいいんだよな?
LineHeightってどのクラスのプロパティ?
行間ってのは段落間じゃない行間のことでOK?
まあEM_SETPARAFORMATとPARAFORMAT2使うことになると思う
>>628 にゅりゅ ってエロい響きだな
631 :
629 :2010/04/23(金) 19:16:34
あ、ここWPFスレだった C#スレと勘違いしてた、ごめん
FlowDocument全体の行間ならFlowDocument.LineHeightで問題ないと思うけど
すまん。 自己解決した。 トークンごとに読み取ってそのトークンをパラグラフを追加するときに\r\nを無視しないのが原因だったらしい。 xamlを調べて初めて原因が分かった 間違い <flowdocument> <paragarh>aaaa<run>(見えないが\r)</run><run>(見えないが\n)</run></paragrah> </flowdoument> 正しくは <flowdocument> <paragarh><run>aaaa</run></paragrah> </flowdoument>
Paragraph p = richtextbox.CaretPostion.Paragraph; TextRange range = new TextRange(p.ContentStart, p.ContentEnd); this.para = new Paragraph(); this.para.Margin = new Thickness(0); this.Spilitter.Parse(range.Text); this.doc.Blocks.InsertBefore(p, this.para); this.doc.Blocks.Remove(p); パラグラフの置き換えを行うとキャレットがパラグラフの一番最後に移動してしまう。これを防ぐ方法はない?あらかじめCaretPostionを覚えておいて、置き換えた後で戻してもダメだった。
>>635 var curP = richTextBox.CaretPosition.Paragraph;
var offset = curP.ContentStart.GetOffsetToPosition(richTextBox.CaretPosition);
var newP = new Paragraph();
newP.Inlines.Add("New Paragraph");
richTextBox.Document.Blocks.InsertBefore(curP, newP);
richTextBox.Document.Blocks.Remove(curP);
richTextBox.CaretPosition = newP.ContentStart.GetPositionAtOffset(offset) ?? newP.ContentEnd;
これじゃダメなん?
>>636 それだとだめだ。
aaa
(aaaの先頭でzを入力)
zaaa
(連続で入力すると、zazaaになってしまう)
なんでWPFってこんなに面倒なの?
文字単位で選択することもできないし、キャレットを文字単位で動かすことすらできない。
開発者は馬鹿なの?
>>637 何がしたいのか分からないんだけど。
文字単位で選択するなら:
richTextBox.Selection.Select(richTextBox.CaretPosition, richTextBox.CaretPosition.GetPositionAtOffset(10));
キャレットを次の文字に移動するなら:
richTextBox.CaretPosition = richTextBox.CaretPosition.GetNextInsertionPosition(LogicalDirection.Forward);
TextPointer クラスと RichTextBox クラスについて、もうちょっと調べたら?
>>638 パラグラフが
aaa
となっているときに
bbb
aaa
とすると、aaaを削除するとキャレットがaaaの先頭にあるにもかかわらず、bbbの後ろに移動してしまうのをどうにかして防ぎたい。
TextPointerについても調べたんだが、画面に表示されている文字単位で位置を取得するメソッドはなぜかなかった。
>>640 >aaaを削除すると
は
>>635 の
this.doc.Blocks.Remove(p);に当たるのかな
言ってることがあんまよくわからないけど、空のパラグラフを置いといてその先頭にキャレット置くというのがやりたいんじゃないの?
ソースはそうなってないだろ
>>641 >言ってることがあんまよくわからないけど、空のパラグラフを置いといてその先頭にキャレット置くというのがやりたいんじゃないの?
それじゃなくて、パラグラフを置き換えてもキャレットの位置をそのまま保つということがやりたい
ScrollViewerのマウスホイールによるスクロールを無効化する方法はありますか?
PreviewMouseWheelでHandledしちゃうとか
>>644 e.Handle = trueでうまくいきました
ありがとうございます
表示部分にしかあたり判定がないんだから同じpanelに全部かさねて表示だけかえればいいじゃない そんな形なら標準ボタンを使うわけでもないんでしょ
Expression Blend で簡単に星形のボタンとか作れるみたいだね。
ジオメトリの作り方がわからないから四角の変形で作りたいっていうなら アフィン変換使いなよ自分で計算してな
Blend使えればベストだけどボタンぐらいならXAMLだけでなんとかなる。 ContorolTemplateを書けばいいだけでサンプルも結構転がってるから。 あとエッセンシャルWPF読んどけ
>>648 それは線形変換で表現できないから無理
高校数学C参照
文字単位で選択するメソッドがないので作ってみた。だが、どうも、遅いような気がする。これより早い方法があったら教えてほしい。 TextPointer getPostionAtCharacters(int offset) { for (int i = offset; this.Document.ContentStart.GetPositionAtOffset(i) != this.Document.ContentEnd; i++) { TextRange range = new TextRange(this.Document.ContentStart, this.Document.ContentStart.GetPositionAtOffset(i)); if (range.Text.Length == offset) return range.End; } return null; }
宇宙仮面のHP エラーでまくり
RadioButtonをC#からCheckする方法ありますか?
あるよ
>>656 XAML側でコントロールに名前(Name="hoge")とかやれば
C#側から従来のWinFormのようにいじり放題
でも実際にはバインディングオブジェクトのプロパティの方を操作するよね
WPFは要素にName付けたら負け
それなんてみすりーど。
662 :
656 :2010/04/26(月) 21:22:55
気にせず名前付けたらいい
真の勝者はXAMLを使わない
blend+コードビハインド 都会派はこれ
ソフトなんか他人に作らせるよね真の勝者なら。
こだわりのソフト作成なら至福だろ 作らされてるなら敗者
WPFの場合 プログラマーはバインド関連をマスター デザイナーはXAML関連をマスター そんなところですかね?
BeginAnimationのタイミングが異なっても、 アニメの動きのタイミングを同期させる方法ってありますか。
あるよ
INotifyPropertyChangedから依存プロパティへのバインドが機能したりしなかったりする わけがわからない
>>669 正解じゃない。
プログラマーはバインド関連とXAML関連をマスター 。
XAML自体はマスターするには.NETプログラミングに習熟してないといけないからデザイナには酷 デザイナーはExpression BlendとXAMLの基礎事項をマスター
だな。MSはデザイナがXAMLを触らなくても大丈夫なようにツールを揃えた方が良いだろね。
WPFのバインディングは勉強すればするほど魅力的なんだよな C#のコントロールにも一応項目あったけどここまで使えたっけ?
デザイナが実際には動かさないスタイルを自由奔放に作成して 上司は「デザイナの作った物がそのまま動く!素晴らしい!」と言い出して 結局はプログラマが地獄を見る。そういう代物だろ?
うーん まあ前ほどは地獄をみないんじゃないかな バインディングが強力なのでいい感じだよ
そこは誤解がないようにちゃんと主張しろよ
.NET 4.0 では NumericUpDown コントロールはサポートされますか?
デザイナーが作る範囲は所詮はwebページで言えばhtmlに毛の生えたことしかしてないからなあ
.NET4な。CLRは4.0。
blend上で動くなら何も心配しなくていいんじゃないの何かあるの?
>>682 .NET 4 と .NET 4.0 の違いを詳しく教えてください。
区別すべきなのでしょうか?
.NET 4.0 とかくことは意味があると思いますが、 .NET 4 と指摘していることについて詳しく教えてください
688 :
684 :2010/04/28(水) 02:28:18
自己解決しました。
ListBoxを使っているほかのサンプルと見比べたところ
<Grid x:Name="MainPanel" Loaded="MainPanel_Loaded">
<ListBox ItemsSource=" {Binding}"
DisplayMemberPath="Bmi"/>
</Grid>
の
<ListBox ItemsSource=" {Binding}"
{Binding}の前の半角スペースが原因で文字列として認識されていたようです。
>>687 質問に対する答えになってないと思いますが・・・
VS2005 / .NET2.0 しか許されない環境で、 MVVMを模倣して手動でモデリングしたクラスプログラミングをすることは効率化になりますか?
ガベージイン、ガベージアウト
>>685-686 「.NET Framework 4」が正式名称。
.NET 4.0と言っても問題なく通じるので実用上の問題はない。わざわざ指摘する程の事でもないだろ
>>682
692 :
689 :2010/04/28(水) 03:17:09
>>74 が気になるなぁ。リフレクション調べてみるか…
>>692 目指す目標としてXAMLなどがあるんだし、それと同じ仕組みにすれば
MVVMも可能じゃないかな?
まあ自前であれこれするより本当はWPFにするべきなんだが
ところでなんでそんな古い環境にこだわらないといけないんだろうw
VとVMの疎結合さえ保てればとりあえずMVVMって言えるのかな? ・Viewを定義する「なにか」を設計する (WPFではXAML) ・「なにか」からViewを生成するライブラリを実装する (WPFではSystem.Presentationとかかな?) ・「なにか」と実行時バインドする方法も実装する (依存プロパティみたいな仕組み。ここでリフレクションががっつり登場) マンドクセ・・・ XAMLの仕様はそのまま使って.net 2.0 WinFormsでもViewが構築できるライブラリ作れば それなりに需要は・・・ないか
一番重要なのはMとVVMと間のデカップリングだと思うよ。
そういえば依存関係を切り離せるコンテナってあったよね? あれは使えないの?
ざっくりいうとVMはVからのMに対するブリッジって認識だがよろし? >693 ぶっちゃけマシン性能にもよるんだろうが未だにWPF遅くね? 頻繁な更新が必要なデイトレアプリみたいなもんとか向いてなさそうなんだが。 >694 そげんな感じのもん作ったお。未だに2000とかにも配慮しなきゃいけなくてな( ^ω^)・・・
DIコンテナは未だによくわからん・・・
>>693-697 thx.
2005なのは、そういう環境でWindowsXpとWindowsCEの開発レッスンを受けてますw
自分が2000使ってるのでその点も嬉しいかなw
>>696 CAL(Prism)なんかはUnityのDIコンテナ使ってるよ。
.NET4で追加されたMEFもかな、仕組みはDIコンテナっぽいが。
ブラウザアプリでエクセルを操作するプログラムが入っててエクセルオブジェクトバージョンが違ってる人がアドレス開いてアプリ操作したらどうなるの?
WPFが描画にGPUとCPUどっちを使ってるかどうすればわかるんですか? 自分のグラボがWPFに対応出来てるかしりたいんです
依存関係の向きがV→VM→Mとなってればいいだけのことで VのコードビハインドでVとVMを手で結びつければバインディングはいらないよ コマンドはVMのメソッドを呼び出せばいいだけ
MVVMの目的はVMを単体テストすることだよ それが必要ないんだったらコードビハインドをVMとみなして XAMLで自身のプロパティにバインドするだけでいい それが本来WPFで想定されていたバインディングの使い方
C++ と XAML の組み合わせで使えないのはなんで?
WPFはマネージコード専用だから C++/CLIで使えないのは単にMSにやる気がないから WPFはアンマネージドな世界との相互運用がしづらいしものすごく高レベルなので わざわざC++/CLIから使うというのはちょっと考えられない
>>703 WindowsSDKツールのV6.0A V6.1の両方ともWpfPerf アプリケーションが入ってません
どのSDKですか?
ブラウザアプリでファイルにアクセスできないと何も出来なくないですか 同一サーバー上のファイルにアクセスするにはどうすればいいんですか
>>709 下手に許すとローカルのファイルをいじり放題。その気になればスパイウェアも仕込み放題ということになってしまうから、それはできないことになってる
XAML:<ListBox ItemsSource="Binding ."/> 結果: B i n d i n g . あぁそうか…stringもIEnumerableだったな… ってこんなんアリなのかw
ちょっとワロタw
>>712 できたありがとう
ハードウェアレンダー 1 になってた
サンプルサイト見てるとカクカクだから絶対CPUレンダーだと思ったのに・・・
Shazzam(WPF/Silverlight用のシェーダエディタ)良いね シンプルだけどWPFやSilverlightのシェーダ書くのには十分 C#側のコードを自動生成してくれる WPFの見本みたいなかっこいいインターフェイス
WPF入門者用のサイトいくつか教えてくれ
ゲームパッド使えるの?
XNAだとXBOX用コントローラしか使えない DirectXは参照できたからそっちで攻めるしかないんじゃない
>>721 PS2パッドも使えるわ
適当なこと言うな
724 :
723 :2010/04/29(木) 22:57:13
訂正来てよかったぜ どう突っ込んでいいか悩んだぜ
いやいや現に使ってるしw なにいってんの?
もしかしたら古いコンバーター使っているんじゃないのか? 1年前に買った奴だと普通に使えたわ
>>726 そういうのもう良いから。
しかし DirectInput に未対応なのはなんでなんだろね。
XNA+DirectXならXBOXコン以外使える WPF+XNAならXBOXコンしか使えない
>>720 全部読んでサンクス
読んで思ったのが
stackpanelに複数配置されたコンテンツを
そっくり別のコンテンツに取り替えるようなのって
xamlじゃ無理?
画像を表示してた場所をすべてボタンに変えるとか
そういうのはやっぱりC#でやるのかね
決まった雛形だら自由に作れるような感じだけど
GUIの表示をごっそり変えるのはどうするのかな
次はバインド読んでみるか
731 :
デフォルトの名無しさん :2010/04/29(木) 23:50:28
ListBox.ScrollIntoView を使うと、指定したアイテムを画面内に持ってくることができますが、 一番端に表示されます。 これを一番端ではなく、もうちょっと内側(2、3個要素が見えるような位置)にしたいんですが、 どうすればよいでしょうか?
>>731 そういうかゆいところに手が届かないこと多すぎるよな
それの対処にやたら時間かかって先に進めないのが
すごくイラつくわ
コアの部分に全然時間かけれない
2,3個上の要素を指定すればいいのでは・・・
やってみたら例外がでた!→範囲内に丸めろよ… やっと初心者がWPFをやる時代が到来胸が熱くなるな
WPF みたいな一部でしか使えないものは危険。
意味わからん
WPF勉強しているんだけど 初心者にはあえてこちらの方がお勧めのような気がする GUI部分とロジック部分を自然に分離して記述するから ソースも見やすくなりそう
740 :
デフォルトの名無しさん :2010/04/30(金) 13:01:04
実際に初心者に使わせたら大半をコードビハインドに記述、 ViewModelでViewを生成し、 ViewがViewModelのコントローラという素敵構造にしたんだが…
>>720 これずーっと読んでいって
第 3回 “見た目”を決めるリソースとスタイル
で詰まった
むずぅ
>>741 そう?
WinFormでもImageListなんてあるけどあれの汎用版みたいなもんでしょ
おっと途中になった スタイルはCSSと似てるし
みんなExpression Blen使ってるの?
>>744 これからWPF試してみたいのでExpression Blend 4が早くでないかなと思ってる。
VS10が出たし、もうすぐだと思ってたんだがアナウンスがないな…
ブレンド無しで WPF ってwww
Blendなんて飾りですよ ControlTemplate生成にしかわからんのです
別にボタンを星型にしたいとか思わないしなあ
ボタンを星形にするだけがテンプレートじゃないだろ WPFの胆はDataTemplateやItemTemplate VSだけだと手書きしないといけない
Blendなきゃだめなのか WPF一気にやる気なくなったわ
やる気も金もない人間は必要とされていないようだ。
2010を使い.NET4でWPFを始めてみました ググりながら試行錯誤してコマンドとコンテキストメニューを繋ごうとしています キー操作だと正常に動作し、PlayPause_Executeが呼ばれるのですが、 コンテキストメニューは見出しやキーの表示は合っていますが、グレー表示のままで選択できません 何が悪いのでしょうか? タイマで定期的にCommandManager.InvalidateRequerySuggested();してみても変わらないようですし キーを押したときにはCheckCanExecuteCommandが呼ばれますが、それ以外では呼ばれないようです public class Commands { public static RoutedUICommand PlayPause = new RoutedUICommand("再生/一時停止", "PlayPause", typeof(Commands), new InputGestureCollection { new KeyGesture(Key.Space) }); } XAMLで(はしょっています) <Window xmlns:local="clr-namespace:hoge"> <StatusBar.ContextMenu> <ContextMenu> <MenuItem Command="{x:Static local:Commands.PlayPause}" IsEnabled="True" /> </ContextMenu> </StatusBar.ContextMenu> C#側コンストラクタで CommandBindings.Add(new CommandBinding(Commands.PlayPause, PlayPause_Execute, CheckCanExecuteCommand)); private void CheckCanExecuteCommand(Object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; }
>>751 お前は一日中いろんなスレで煽るしかできない人間みたいだな
754 :
752 :2010/05/01(土) 14:06:29
>>752 どうやらContextMenuの場合だけのようで、理由はまだよくわかりませんが
とりあえずコンストラクタの最後にFocus();を入れることで回避できることがわかりました。
>>753 お前は一日中いろんなスレで煽られるしかできない人間みたいだな
Blendなんて飾りですよ。漢は手書き。マジで、Blendは非プログラマ向けの ツールだから、開発者はUIをちゃんと設計して手書きした方が覚えがいい。
うむ確かに手書きで覚えないとここまで分離した作りになると わからなくなるぞ JavaScript書くやつだってhtmlやCSSは知ってるだろ? C#とXAMLの関係ってそういうもんだよ
非プログラマ向けとかまで言い切っちゃうのは逆にblendを過大評価しすぎ 手書きすることとUIを設計することは全然関係ないし 細かいアニメーションとかスタイル指定とかblendあったほうがいいに決まってんじゃん
設計して、手書きしろと薦めただけだから関係なんて求められてもねぇ。 設計してBlendで作れるんなら別にそれでいいけど、細かいアニメも スタイルも、設計さえしてあれば、手書きできるから、敢えてBlendじゃ 無いとできないものって無いでしょ。 感覚的に作りたいという意味でBlendはプログラマ的じゃないよ。 でも、非プログラマに使わせて使えるかというと、使えないんだけど。 下手にソースを汚されても困るし、やっぱBlendは要らないなぁ。 存在が非常に中途半端。
ああそれだとまあ同じように感じてるのかな 現状のblendはプログラマがデザイン的な作業をすることをサポートするツールって感じる で俺には有用 アニメ付けるのにプレイバックなしで手書きとかやってらんない
ホームページビルダー使えたからって プログラミングができるわけじゃない
html・cssの手書きとかあんな糞つまらん作業したって別に自慢には
>762 cssは手書きしてた頃しか知らない。誰でもできる技術になった頃には 辞めてたから。XAMLもアホでもできるようになる前には、辞めて別の 何かを始めるよ。 元々は、つまんないとかの話じゃなくて、プログラマなら、デザイナで 操作するだけじゃなくて、ソースで中身を覚えろって話なんだけどね。
何こいつ気持ち悪い
わろた 手書きしてる俺カッケー(キリッ
>>763 アホでもできるようなコードしか書けないから
すぐに追い抜かれて嫌になるのですね
並のレベルのプログラマならblendの出力なんかいざとなればいつでも読めるんだからどうでもいい話
>767 あぁ、いかにもやったこと無いって感じのコメントだね。 できるけど、嫌んなるよ。
>>767 やればできる、っていうのとは あんまり関わりたくない・・・
どうだろね まだ本質的にややこしいGUIは作ってないし blendで弄って出てきたXAML見てなるほどとか言っちゃうことがあるレベルだからわからんけど でもXAML一緒に表示して弄れるんだからあんま問題なくない?
>770 仕様的に危ない点もあるけど、デザイナが他にいるとして、見た目は 他人が作るわけだ。大概のデザイナはソースが読めないから、 ソースにコメントを入れるとか、読みやすいソースを書くというセンスも 無く、Blendが生成したソースがそのまま送られてくる。 書き直そうと思っても、こういうソースになった意図(内部的な実装仕様) を読み解かないと、書き直せない。けど、デザイナは内部実装の仕様なんて 存在自体を知らんよ。 一人でやるなら自分の頭の中だけで解決するから、好きにすりゃいいと思う。
まあ俺はもともとblendがデザイナとの協働ツールとして優れてるとは全然思ってないからね
言い訳するな
言い訳ってw >現状のblendはプログラマがデザイン的な作業をすることをサポートするツールって感じる 先にこう書いてるよ
ListViewで6000行10列ぐらいのDataTableバインディングしてるんだけど、スクロールが遅い コンテナのリサイクルと仮想モードは有効にしてて、遅延スクロールは最終手段ってことで保留してて、 現状でこれなんで、デザインどころじゃないんだが 兄さん達はどうやって最適化してる?
>>775 表示しているところだけListViewに追加する
他はダミー
バインドするアイテムを制限するしかない気がする。
そういうの必要になったらなにを試すかなと考えたら 直結するんじゃなくてvisualBrush化して並べるとかかなと思った スクロールは早そうじゃない?
>>778 visualBrushが分からんので調べたらようはハリボテか!それ頂き!
適当にブラーかけて描画省略してもよさそうだ、
兄さん達ありがとう。試行錯誤してみるよ
描画というより重いのはレイアウトだろ
ボタンをひし形にして疑似3Dゲームのように並べるにはどうすればいいだろう? 理想としてはウインドウの大きさに合わせて縮尺が変わってくれるといいのだが・・・
782 :
781 :2010/05/02(日) 03:40:35
SkewTransform弄れば擬似3Dっぽい表現は一発 ウィンドウのサイズに追従させるのはパっとはわからない
一人で作る小規模アプリにWPFは効率悪すぎる
>>783 自己レス
初期表示で傾斜つけたコンテナをウィンドウに収まるように配置しとけばリサイズには勝手に追従するなあ
uniformgridならうまく拡大してくれるような気がする
786 :
781 :2010/05/02(日) 05:15:31
>>783 >>785 朝早くありがとう
ボタン単体で傾斜つけてグリッドに埋め込んだりしてたけどどうもおさまり悪いので
ボタンを入れ込むグリッドそのものを回転しちゃえって方向で今調べてました・・・
Blend使った方が楽かなあ・・・・
こいつが出力するxamlで勉強した方が速そう・・・orz
UniformGridでかっちりできるね 縦横比によっては見えなくなっちゃうけど blendはそりゃあったほうがいいでしょ なかったらこんなのめんどくさくて試す気もしないもん
おっとボタン上のテキストは正面向いてないといけないのかなー それだと一手間いるな・・・
>>788 まさにそういうのです
まあ影はこの際いらないかなあ・・・
将来的にはスキンも考えてるので
>>788 あれですかね
ボタンを回転させるよりボタンを星形にするようにベクターをいじって
ひし形のボタンを作った方がいいかもしれないですね
ただそういう場合ってヒットエリアって矩形なんだろかそれとも作った形そのままなんだろうか・・・
>>794 まあ本当はウインドウサイズ固定などができれば楽なんですけど
なにせウインドウズアプリなのでどうしてもウインドウサイズの変更は
できて当たり前みたいなところがあるのがつらいんですよね・・・
まあこんな状況だからウインドウズ関連で指を使ったタッチパネルUIが
普及しないんでしょうけど
細かいタッチ制度を出せるマウスもしくはスタイラスのような
ポインティングデバイス向けUIは得意なんでしょうけどね・・・
というか、ゲーム作るならこれぐらいボタン使わないで描画しろよって話だな 中学生でもできるぞ
WPFの3Dはゲーム作成の為にある
データの視覚化とかトランジション効果とかの為だろ
>>798 こういうUIを採用してるアプリが思い当らなかったのでゲームを例題にしてますが
ゲームじゃないですよ
>例題にしてますが >ゲームじゃないですよ 例題にしてますが 作っているのはゲームじゃないですよ
803 :
デフォルトの名無しさん :2010/05/02(日) 11:06:15
Gridはレイヤーみたいな使い方もできるぞ がんばれ
道具に振り回されている感じだね もっと頭使えよ
gridの使い方もわからない男の人って…
>>803 これが進化したらビューポイントが出来上がりそうだと思った。
808 :
デフォルトの名無しさん :2010/05/02(日) 17:30:25
>>804 はい
>>805 まあ休みの暇つぶしに始めたのでいろいろわからないことだらけなんですよね・・・
>>803 これ格闘ゲームのキャラクター選択画面みたいだな
こんなしょぼいもん作って喜んでるって レベル低いな
俺のデザイン最強(キリ こんなしょぼいもん作って喜んでるって レベル低いな(キリ どんなUI作ってるんだろう見てみたい
言ったもん勝ちだし。 MVPの俺が言うんだから確か。
そういえばWinFormのClientSizeに相当する動きってどうやればいいんだろう
コントロールとDataSetとの接続の仕方が判らない・・・ データベースを介さないと出来ないのか?
815 :
781 :2010/05/02(日) 20:21:27
>>810 新しいことへの挑戦中なのでこれもラフスケッチみたいな物ですよ
今後でるであろうタッチパネル搭載端末で使いやすいUIの研究ですから
ある程度決まった画面内やりとりするってのはゲームUIから学ぶことが
多いのでこれもその一つなんですよ
WPFの勉強も兼ねてですから
まあ偉い人にはわからないでしょうねw
816 :
781 :2010/05/02(日) 20:31:16
勝手にコメントしないでください
817 :
781 :2010/05/02(日) 21:12:26
じゃあ、俺が変わりに。 アノデスネ・・・。
Fromの上にWPFのMediaElementを乗せた簡易メディアプレイヤーを .NET4で完全WPFに書き換えたら重くなった やってることはほとんど大差ないのに何故だ
>>813 Window.ContentのWidthとかHeightじゃだめ?
>>815 研究なら自分でやることだな
この程度のことを質問しているようじゃ
何も出来そうにないな
821 :
781 :2010/05/03(月) 01:19:15
>>820 その人成りすましなんですって・・
ID欲しいよ・・・
>>819 ありがとうございます。
別件で
動的にコントロールを追加したりする場合はやはりC#側で制御するしかないんですかね?
動的の度合いがわからない
技術制約無視して条件分けとか言い出すんだから「xamlにコード埋め込め」でいいと思うよ
825 :
818 :2010/05/03(月) 10:07:19
>>818 動画の上にテキストを表示するためにOuterGlowBitmapEffectを使ってたけど
.NET4で削除された?のでDropShadowEffectに書き換えたがこれが重いらしい
ウインドウサイズをいじって動画と重ならないようにすると少しだけ軽くなり
非表示にしたりEffectを無効にするとぐんと軽くなる
ヘルプの.NET4の相違点のページかなんかで
描画方法が変わったとか何か書いてあった気がするけどページが見つからない
BitmapEffectはパフォーマンスがクソだからというので ピクセルシェーダでGPUを思いっきり使うようになったんだけど(.NET3.5〜) ハードウェアが対応してないとか
827 :
デフォルトの名無しさん :2010/05/03(月) 21:51:18
>>825 俺は、動画はないけど文字列をいっぱい表示してるけど縁取りでDropShadowEffectを使ってみたら重いな、OuterGlowBitmapEffectも重かったけどね
ボカシの処理を無くして縁取りの処理をもっと軽くできないものか・・・
>>827 ぼかしを無くして影を落とすだけでも重かったので、妥協して半透明の背景をつけることにした
BitmapEffectが重いからって話だったはずなのにこっちの方が重くなるのが納得いかない
グラボは6800XTだからShader 2.0には対応してるはずだけど3.0が必要なのかな
カスタムコントロールにResourceDictionaryを定義した xamlファイルを結びつけるのはどうすればいい? カスタムコントロールのコードからリソース内の表示用部品を利用したいのだけれど。
>>829 xaml の読み込み
ResourceDictionary.MergedDictionaries
or
XamlReader.Load(file)
部品の取得
FrameworkElement.FindResource(key)
or
ResourceDictionary[key]
>>829 これでも
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("pack://application:,,,/MyApp;component/Dictionary1.xaml", UriKind.Absolute);
string myValue = rd["MyValue"] as string;
>>830-831 さんくす!
使うリソースは1つだけなので
this.Resources.Source = new Uri("pack://application:,,,/testcontrol/test.xaml");
でいけた。this.Content = this.FindResource("button");てな感じで使えるね。
これでようやくコントロールの表示部分に取り掛かれるわ
日本のメーカーPCはグラボ非搭載が主流だからWPFはきついな
誰一人つられないんだからね
現在主流のCore-iモデルの内蔵はintel HD Graphicsで そのコンパネがWPFだったりするんだけどな
WPFってなんだろう
人生・・・かな?
鉄板麺!!
WPFはAdobeのあれをパクったような感じ
国連になんかあったな
841 :
デフォルトの名無しさん :2010/05/06(木) 23:49:46
Window の中に Grid が1つあり、
その中に同じ大きさの Viewbox を3つ配置しています。
3つのViewboxの位置は同じで、重なって配置されます。
それぞれのViewboxにはGridを配置し、その中には
・透過色を指定したPNG画像と
・Rectangleを1つずつ配置しています。
3枚の画像は同じ大きさで、UniformToFill にしています。
Rectangleは、各画像の背景色の領域中に配置するようにしています。
また、Rectangleはクリックされると Fill が変わるようにしています。
このとき、一番階層が高い Viewbox 内のRectangleしかクリックに反応してくれません。
2番目、3番目のViewbox内のRectangleも反応させるにはどうしたら良いのでしょうか?
ソースを以下にUPしましたので、よろしくお願いいたします。
ttp://www.dotup.org/uploda/www.dotup.org866125.zip.html pass: wpf
現象が発生する最小のプログラムでないと誰も見ないぞ 単純に一番目にRect三つ配置すればいいんじゃねーの
>>841 Grid.Row, Grid.Column を分けずに、一つのセル(?)でやってるから、最後の Viewbox がイベントとっちゃって、その兄弟にはイベントが伝播しない。
素直に Canvas 使うか、Grid.Row を3つに分けなさい。
844 :
841 :2010/05/07(金) 00:12:10
>>842 急いで書いたため、情報不十分でした。
各Viewboxは個別に移動、拡縮をしたいのです。
(それに応じでViewbox内のオブジェクトも、移動+拡縮させたいです)
ですので、一番目にRect3つ配置ではダメなのです。
>>843 ありがとうございます。
いただいた情報を元に考えて見ます。
>>844 Grid を入れ子にすれば、Grid で MouseUp をとるように変更すればできたけど・・・
もう少しスマートな方法ないかね。Viewbox 使わなければ Background に Transparent 設定してイベント透過させられるのだけど。
<Grid MouseUp="rectangle_MouseUp">
<Viewbox />
<Grid MouseUp="rectangle_MouseUp">
<Viewbox />
<Grid MouseUp="rectangle_MouseUp">
<Viewbox />
</Grid>
</Grid>
</Grid>
-----------
private void rectangle_MouseUp(object sender, MouseButtonEventArgs e)
{
((((sender as Grid).Children[0] as Viewbox).Child as Grid).Children[1] as Rectangle).Fill = Brushes.Red;
}
846 :
845 :2010/05/07(金) 00:40:27
Grid 全体で MouseUp とってしまうから駄目だった。 忘れてくれ。
つまり透過してるので最前面でFill状態の画像をムシして その後ろの画像にヒット判定させろ? 無理じゃね?
いや3ついっぺんにクリックされたように扱いたいって話じゃないの?
>>848 それだったら全面のやつがイベント受けたらほかの物にも伝えるとかそんなんでいいんじゃね?
それか画像を管理してるコンテナ、この場合はGridがクリックイベント拾うとか
851 :
841 :2010/05/07(金) 01:12:58
皆さん、ありがとうございます。
やはり透過処理していようとも、画像の領域から
イベントを透過させることは無理(難しい?)みたいですね。
>>847-848 一番の理想は、”見えているオブジェクトがイベントを拾う”です。
うpしたものを見ていただけているか分かりませんが、
例えば2番目のViewboxを仮に下方向にAnimationさせた場合、
2番目のViewboxに配置したRectangleは「黒色」の後ろに隠れます。
このとき、隠れたRectangleはクリックできないようにしたいです。
が、それはあくまでも理想であり、3つヒットでも出来るなら嬉しいです。
一番上が拾うんでいいならTunnelじゃいかんのかね
しかしwindowsはマウスありきでできてるから こういうGUIまわりは作りにくいな
>>852 TunnelってPreview〜のあれ?
重ねたImageに対してトンネルなんてできるのか?
>>841 ViewBox内のImageに
IsHitTestVisible="False"
をいれたら下のRectangleも反応したよ
ただ、これだと隠れたRectangleをクリックさせない
というようなことはできないけど
Imageに不透明な部分だけマスクするClipを指定すればいいんじゃないの?
4の良書でないかなぁ
WPF4のデザイナで配置したコントロールのフローがWPF3と違いますよね…? ウィンドウのリサイズを行うと、WPF3だと勝手に連動してコントロールのサイズが変わるのに、WPF4だとウィンドウだけしかリサイズされない…。 結果、プロパティやXAMLをちょこっと変更しなければいけないのだけれど。
>>858 コントロールの上下左右に小さな円があるだろ
それクリックするとコンテナの端からの距離が固定される(WinFormsのAnchor相当)
WPFのフォントレンダリングをフォームアプリと同じにすることはできないんでしょうか? VS2010がフォームと同じフォント表示になったのに、 自分で作ったWPFアプリケーションのフォントレンダリングが前のままです。
同じというのは違うけど。 3のソースを4でコンパイルするだけじゃ駄目。 TextOptions.TextFormattingMode TextOptions.TextRenderingMode
FlowDocumentに表示されている内容の表示上のサイズを取得する方法はありますか?
>>860 クリックですか。
クリックしたところ、希望の動作になりました。
ありがとうございました。
int型のプロパティPercentがあって、 それをバインドしているTextBlockでは、後ろに"%"を付けたいときって どうすればいい?
IValueConverter するまでもないな、StringFormat
866 なんか分かりづらくなっちゃった {Binding Path=Percent, StringFormat=0\\%} これでいいのか? マークアップ拡張内は書式指定文字列が訳分からんことになるな
>>867 おおーまさしくこれだ。
なんで円記号が2つも…って思ったけどマークアップ拡張内では円記号もエスケープ必須か
GUIプログラミングの初心者は、WPFから入るよりForm使った方がいいのかな? WPFはまだ情報量少ないみたいだし
871 :
デフォルトの名無しさん :2010/05/12(水) 18:18:10
>>870 最終的に何を作るかでも変わるけど似てるようでかなり違うからなあ
下手にFormの方を覚えるとWPFだと戸惑うこともあるよ
GUIプログラミングはWPFから入ったけど今更Formなんて勉強する気しないよ
>>872 最初からWPFって、どうやって学習した?
後学のために教えて欲しい。
>>873 ネットで情報収集。殆どはMSDNから。
書籍はエッセンシャルWPFだけ買った。
質問はここやC#スレで。
まだ全体は勉強してないけどな。目的のアプリ作るには一部だけでも十分。
C#と.NET Frameworkも同時にだったからだいぶかかったが。
WPFって動的にコントロールを生成しちゃいけないみたいな感じが面倒
え?DataTemplate使えば必然的に動的に生成しまくりだろ?
877 :
デフォルトの名無しさん :2010/05/12(水) 20:03:39
>>875 そんなことはないんじゃないの?
WPF側で名前つけておけばFormでやてったようなことはできるし
そういうのがだめってのならWPFなりの書き方すればいいだけだし
>>874 .NET FrameworkっていうとC#とかのライブラリみたいなものだよね?
C#学習するのと.NET学習するのって違うの?
初心者なんで見当違いなこといってたらすまん
879 :
デフォルトの名無しさん :2010/05/12(水) 20:28:17
>>878 .NET Framework上で動く中間コードを作るための言語が
C#やVB.netだよ
C#が言語で、.NETはそれらの言語で使えるライブラリ群
882 :
878 :2010/05/12(水) 23:24:39
.NET Frameworkってそういうものだったのか 少しは理解が深まった、サンクス
>>874 ありがとう。やっぱりネットか。
早く最新状態に即した書籍が出てくれないかなと思うんだが、欲しい情報は
ネットを探しまくるしかないんだな。
>>881 > C#が言語で、.NETはそれらの言語で使えるライブラリ群
前後逆の方がよくね?w
881の順がいいと思う。 言語の方が具体的で、ライブラリの方が抽象的だから。 880は、くその役にも立たない例えの見本みたいなもんだと思う。
GridViewが標準でWinFormsのListViewのFullRowSelect状態になってるんだけど カラムのある領域外では選択不能にするにはどこ弄るのだろう? ItemContainerStyle?
うまくいかねーな マウスで矩形選択っぽく範囲選択できるようにしたいだけなのに…
>>888 最高の回答だ
だがなんでこんな微妙な部分で退化してんだ
楽しくなって来た所なのになー
ListView使いにくいんだよね 結局SilverlightではListView削られてDataGrid追加された WPF Toolkitか.NET4で逆輸入されたDataGrid使ったら?
おしえてください。
WinFormをWPFで呼び出しています。
Windows.FormsIntegrationを参照して、
UserControl1には、400x400のグループボックスがあります。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml "
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:ts="clr-namespace:WpfApplication1"
Title="MainWindow" Height="500" Width="500">
<Grid>
<WindowsFormsHost>
<ts:UserControl1 />
</WindowsFormsHost>
</Grid>
</Window>
とMainWindow.xamlで呼び出しても400x400の大きさになってくれません。
なぜでしょう??
>Title="MainWindow" Height="500" Width="500"> これHeightとWidthをautoにしたらなるんじゃね
>892 レスありがとうございます。Autoやってみましたが、駄目でした。
Grid のほうで Auto 指定してみたら? <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> </Grid>
895 :
891 :2010/05/14(金) 00:26:45
>894さんありがとう。駄目でした。下に長くなってしまいます。
<WindowsFormsHost Width="400" MinWidth="400" MaxWidth="400" Height="400" MinHeight="400" MaxHeight="400"> <ts:UserControl1 /> </WindowsFormsHost> でも下長になる。 使用モニタ AcerB273HU 2048x1152、 フラットスクウェアの1280x1024のPCでやってみましたが下に長くなってしまいます。 ペイントに張り付けてピクセル測ってみると 約 横230px 縦300px となります。
UserControl1側で public UserControl1() { InitializeComponent(); Graphics g = this.CreateGraphics(); this.groupBox1.Width = (int)(400 * 72 / g.DpiX); this.groupBox1.Height = (int)(400 * 72 / g.DpiY); } にしても駄目でした。Formでしか動作しないカメラ実況をWPF上の どうしても表示させないといけないのですが。。。
おいDataGridの上だとMouseDownが拾えねえぞ 思うように動かないもどかしさで強烈にイライラしてきた
余白だと拾えるなあ イミフ
選択されていないセルの上でクリックした場合拾えない が正確みたいだ 選択されているセルの上でもう一度クリックするとMouseDownが来る これ誰が得する仕様なんだオイ
またお前か もう辞めてしまえ
WPFで組んでいるんだけど
App.config をどうにかしてexeに埋め込めませんか?
app.configの埋め込みに関して探していますが、
それらしいページは以下しか見つかりません。
ttp://d.hatena.ne.jp/Kazzz/20050930/p1 私にはこのサイトに書かれている4行(枠で囲まれている部分)
の意味が全く分からないのですが、分かる方おりませんか。
俺はDIコンテナを使っていないので1行目は除くとして、
2〜4行目の「指定された場合」「配置されていた場合」というのは
開発側で制御することなので「指定していた場合」「配置していた場合」
ならまだ分からなくもないのですが・・・(仮にそうだとしても結局分からないのですが)。
枠の下に、「この状態でアセンブリ名+...」とありますが、
この状態っていったいどういう状態のことなのか読み取れません。
俺はapp.config を使っており、ビルドすると アセンブリ名+.exe.config が生成される
状態です。俺の解釈だと、枠内3行目から、俺はapp.config を使って
アセンブリ名+"components.config と言う名前で設定ファイルを埋め込む
のだと思うのですが、ここで書いてある「設定ファイル」が何なのかも不明ですし
よく分かりません。
俺が使っているapp.configを「埋め込みリソース」にして
アセンブリ名+components.config
アセンブリ名+.components.config
アセンブリ名+.exe.components.config
と名前を変えてビルドしてみましたが、configファイル内を読んではくれませんでした。
結局 app.config を埋め込むにはどうすれば良いのでしょうか?お願いします。
WPF関係ないだろ。ふらっとか相談室が適当。
>>903 .NET用のS2がApp.configを使っている。
S2でApp.configを使わない場合はどうするかという内容だろそれ。
906 :
903 :2010/05/14(金) 07:12:52
>>904 申し訳ありません。
WPFから入ったもので、この話はVC#全般のことなのですね。
別スレにて質問いたしますので、
>>903 は無視してください。
スレ汚し失礼しました。
907 :
903 :2010/05/14(金) 07:17:34
>>905 ありがとうございます。
.NET用のS2・・・が分かりませんので調べてみます。
貼ったURL先は、私のやりたいtこととは違うということですか・・・残念です。
書き込むタイミングが悪くてすみません。
消えます。
908 :
デフォルトの名無しさん :2010/05/14(金) 07:20:41
.netで開発する場合はアセンブリ名って実行ファイル名(拡張子抜き)であり ネームスペースであったりしない? まあWPFは関係ないのは事実だな
WPFでも作れるようなオサレアプリって実際はAir採用してるのばっかりだな MSやばいんじゃねーの
>>900 DataGrid_PreviewMouseDownで拾えるだろ。
まずMSDNのイベント一覧よく見ろ。
>>902 お前もトンチキな回答して得意気になってんじゃねえよ。
トンチキなんて5年ぶりくらいで聞いた
>>910 ありがとう
すまん
俺が一番トンチキなんだよ
902もthx
914 :
デフォルトの名無しさん :2010/05/14(金) 23:12:57
マルチ失礼します。 Viewort3D 内のモデルをデフォルトの(グーロー?)シェーディングではなく、 三角形の面法線に対するフラットシェーディングで描画したいのですが、どのようにすればできるのかお教えください。 三角形毎に(座標の重複を気にせずに)点を登録してワインディングするのはデータが増えてしまうので避けたいと考えています。
WPFで3D? . ィ ._ .......、._ _ /:/l! :~""''.>゙' "~ ,、、''‐'、| _ またまた ご冗談を ゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ " .!-'",/ `'-‐'') /\ `/ でノ-〈 .-''~ >'゙:: ‐'"゙./ ヽ.,' ~ / //::::: ', / ,:'゙
マルチ失礼しますって新しいな。
それがマジなんですよ。困った事に。
directx直接叩きなよ いい加減リファレンス以外に隠しコマンドなんてないって知れ
919 :
デフォルトの名無しさん :2010/05/15(土) 07:02:10
WPF+XNAに関しての記述がどこかにあったな
WPF+XNA は element host 使って XNA の窓を開くとかそんなんだったような気が。
ここまでごちゃごちゃしてくると Appleの強権発動しまくりでAPIをシンプルに保つやり方がうらやましくなってくるな
言う程ごちゃごちゃしてるかね?
Appleの強権発動は見てて気持ちいい。 真似してやってみるともっと気持ちいい。
924 :
デフォルトの名無しさん :2010/05/15(土) 14:17:20
wpfのレイアウトって地獄だな。
gridの正しい使い方を理解すればあとは楽々だ
Gridは理解できた それ以上は無理だった WPFはGridだけでいいと思った
リソースの検索は「論理ツリーの親を再帰的に検索していきルートまでたどっても 見つからないとしてApplicationやテーマも見る」なんだよね? で、テンプレートは論理ツリーにはぶら下がらない(TemplateParentの説明@MSDNによると)。 ってことはテンプレートの中からは、Applicationやテーマのリソースしか見えないってことでおk? キーを明示的に指定すると外にあるXAML上の親要素のリソースのスタイル等も見えているような気がするけど。
WPFってどんなソフトに向いていると思う? GUIのソフトは何でもかんでもWPFにするべきだと思う?
929 :
デフォルトの名無しさん :2010/05/15(土) 21:44:50
見た目をこだわる場合だけじゃね?
これからはなんでもかんでもWPFで良いんじゃないの?
ピュアな.NETだけで作れるものだったらSilverlightのほうが
933 :
デフォルトの名無しさん :2010/05/15(土) 22:20:49
実はstがパブリックフィールドだった ていうかオブジェクト名とかリンク先には出てこないようだが?
>>934 そうですパブリックフィールドです。
リンク先のは
>プロパティのサブプロパティは、C# で使用される構文と同様の構文によって指定できます。
>たとえば、Path=ShoppingCart.Order 句は、オブジェクトまたはプロパティ ShoppingCart
>のサブプロパティ Order へのバインディングを設定します。
が該当するかなと
ルート要素でDataContext="{Binding RelativeSource={RelativeSource Self}}" それとINotifyPropertyChangedを実装するか依存プロパティを使う必要がある InitializeComponentの前で代入すれば一応動く(更新はされない)
937 :
デフォルトの名無しさん :2010/05/15(土) 22:35:42
だからコードだせよ
コードビハインド namespace WpfApplication1 { public partial class MainWindow : Window { public ScaleTransform s; public MainWindow() {InitializeComponent();} public static readonly DependencyProperty PercentProperty = DependencyProperty.Register( "Percent", typeof(double), typeof(MainWindow), new FrameworkPropertyMetadata(0.1)); public double Percent { get { return (double)GetValue(PercentProperty); } set { SetValue(PercentProperty, value); } } private void Window_Loaded(object sender, RoutedEventArgs e) { s = new ScaleTransform(); Binding bi = new Binding("ScaleX"); bi.Source = s; this.SetBinding(PercentProperty, bi); s.ScaleX = 1.2; } private void stack_Loaded(object sender, RoutedEventArgs e) {stack.DataContext = this;} } }
939 :
デフォルトの名無しさん :2010/05/15(土) 22:40:39
うわきた そのまま貼りw ここは外部のコード貼りサイト使わないのか
<Window x:Class="WpfApplication1.MainWindow"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml "
xmlns:w="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded">
<Grid>
<w:CustomControl1></w:CustomControl1>
<StackPanel x:Name="stack" Loaded="stack_Loaded">
<TextBlock Text="{Binding Path=Percent}"/>
<TextBlock Text="{Binding Path=s.ScaleX}"/>
</StackPanel>
</Grid>
</Window>
イランとこ削ったけどこんな感じ。Percentプロパティはちゃんとバインドできてる。
>>936 のRelativeSource Selfでの指定ではうまくいかんかった。
プロパティにしろ
> public ScaleTransform s; (゚д゚)
それと、プロパティにしてもDataContextを設定するタイミングによっては反映されない RelativeSource Selfでうまくいかないのはそれが理由 更新を確実に反映させるには>INotifyPropertyChangedを実装するか依存プロパティを使う必要がある
これは酷すぎ。 デバッグよりも、書籍で基礎的なBindの説明を全部読み直すことをお勧めする。 あと出力ウィンドウを見ろ。バインド失敗の実行時エラーが表示される。
書籍ねぇ
946 :
デフォルトの名無しさん :2010/05/15(土) 22:54:28
なるほど。パブリックフィールドをパブリックプロパティにしたらうまくいった。
出力ウィンドウ見てなかった…。
>>946 次からそこ使います
RelativeSourceを指定してもうまくいかなかったのはStackPanelで宣言してたからだった…。まぬけ
Windowに書かないとだめだ。
あとソース直下のプロパティが依存プロパティでないと変更が反映されない。
今回の例では、フィールドからプロパティに書き直した”s”が依存プロパティでないと、
そのプロパティであるScaleXが依存プロパティでもきちんと反映されない。
>>943 の言ってることがようやくわかった。今日はぐっすり寝られる。おやすみなさい
まあしっかり寝ろよ
さて起きたらWPFで3D画像処理の仕事だ。動く訳ねえからな、こんなもん。 やる気がしねえや。
951 :
飛び出せ!名無しくん :2010/05/18(火) 07:06:30
WPFの本探しているがいいのがない オススメある?
952 :
デフォルトの名無しさん :2010/05/18(火) 08:01:30
エッセンシャルズ一択だろ
2010が出てからWPFはじめようとする人が増えたみたいだな 一儲けさせてもらいますか
>>953 ちゃんと情報を咀嚼したWPFの本を書いてくれると言うのか。
頼むわ、良かったら買うから。
煽りでもなんでもなく良書書いてくれたら5000円越えるぐらいでも買うと思う。
期待してるわ
<TextBlock/>と<TextBlock Style="{StaticResource {x:Type TextBlock}}"/>は違うのに <Style TargetType="..."/>と<Style TargetType="..." x:Key="{x:Type TextBlock}"/>は同じなのか… リソースの検索ルーチンワケワカメ
>>954 咀嚼っていうか
ちょっとゲーしちゃったやつだけど
よかったらお召し上がりください
エッセンシャルって基礎知識あること前提に書かれてるからはじめに読む本じゃないだろ。 理解深めるには良いかもしれんが。 和書なら少々古いが、川西氏翻訳のWindows Presentation Foundationプログラミングがオススメだと思うが。 洋書なら Pro WPF 一択かね?タウンページ並の分厚さで読むのに不便だが。
>>959 川西氏翻訳〜は
その後に決まりが変更されたことばかりで
間違った知識が入ってしまうと思うけどなぁ。
サンプルソースを入れてもビルド通らないこと多いし。
大概の言語に入門サイト見てーなもんはあるもんだが WPFのマイナーさが浮き彫り
WPFデーターバインディングは凄いけど、 ほとんどのプロパティにアレが仕込まれてると思うと、 ちょっとゾッとするな。 データークラス作るの面倒くさいし。 CLRのオブジェクトレベルで実装してくれればいいのに。
静的型では仕方ないでしょ 添付プロパティとか言語に組み込んだら型の意味がなくなる
964 :
デフォルトの名無しさん :2010/05/20(木) 00:08:52
>プロパティにアレが仕込まれてると思うと、 あれとは?
set { if (value != this.hogeValue) { this.hogeValue = value; NotifyPropertyChanged("hoge"); } }
966 :
デフォルトの名無しさん :2010/05/20(木) 00:19:27
メジャーなアプリがWPFで書かれたとかあったっけ? IDEとかじゃなく一般人が使うようなので
967 :
デフォルトの名無しさん :2010/05/20(木) 00:20:44
NotifyPropertyChanged これは仕方ないでしょ・・・
文字列で通知するのがやな感じ
969 :
デフォルトの名無しさん :2010/05/20(木) 00:32:37
>>968 そんなの言ってたらSQLとかhtmlとかどうするのw
ほんとにhtml以下の速度だったりするから困る
ラムダ式と式木使ってプロパティ名渡すのがいい感じだった。
WCFとかすごいぞw
974 :
デフォルトの名無しさん :2010/05/20(木) 02:36:32
>>966 無い。
そういうのはAdobe AIRが使われている。
>>969 おま、何のためにLINQ出て来たと思ってんだよwwwww
とっとと言語内で別の言語使えるようにしてくれんかね… unsafeみたいにブロックで区切ってそこからはSQLネイティブで書いてインピーダンスミスマッチはは規定もしくは明示的に指定したものを使うとかで。 LINQは便利だけどなんか無理くり自分の土俵に持って来てる感が美しくない。
お前らスレ違い
評価を始めて、最初は良さそうに思うけど、 すぐに、マイクロソフトらしい実用に耐えない設計の甘さが露呈してきて幻滅する。
繰り返しをForeverに設定したアニメーションの移動速度を 動的に変更することって出来ますか? 例えばスライドバーで1〜10の値を得られるとし、 スライドバーの値を大きくすると、アニメーションの速度も 一緒に速くなるようなことがしたいのです。 どうやればできそうでしょうか?
IValueConverterでdoubleだかintだかからDuration型への変換を定義して アニメーションのDurationプロパティのバインディングを使えばいいんじゃない
WPFってなんで死んでしまったの?
死ぬも何も芽が出なかった
まだWPFを使いこなせてないのか
MonoのようにLinux版でないかな
ギンピカ
米国のサイトが翻訳されないから
若干翻訳されてるが文章がくどすぎて読む気にならない 下手糞
ハリボテすぎる。
できぬっ!!
酷すぎる…っ!!!
翻訳ェ・・・
994 :
デフォルトの名無しさん :2010/05/21(金) 15:09:28
V V (´・ω・`) うさちゃんピース
次ぎたててくる
おつおつ
発掘!五枚雑巾!!
美しさは皮一枚 醜さは骨の髄まで
1000ならWPF終了
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。