1 名前:デフォルトの名無しさん [2009/12/27(日) 10:58:30 ] あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについ て語るスレ。.NET3.5 SP1 もリリースされて盛り上がってまいりますた。 Visual Studio 2008 ttp://www.microsoft.com/japan/msdn/vstudio/ Microsoft .NET Framework 3.5 Service Pack 1 ttp://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ja WPF Toolkit - June 2009 Release ttp://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117 Visual Studio 2010 ttp://www.microsoft.com/japan/msdn/vstudio/2010/overview/ 関連スレ Microsoft Silverlight その4 ttp://pc12.2ch.net/test/read.cgi/tech/1244812356/ 過去スレ 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/
645 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 00:52:19 ] >>644 e.Handle = trueでうまくいきました ありがとうございます
646 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 03:26:57 ] こんな感じでボタンを並べるにはどうすればいいんでしょうか? uproda.2ch-library.com/239369drL/lib239369.png 平行四辺形とかでしたらなんとかなるんですが・・・
647 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 04:25:39 ] 表示部分にしかあたり判定がないんだから同じpanelに全部かさねて表示だけかえればいいじゃない そんな形なら標準ボタンを使うわけでもないんでしょ
648 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 06:27:53 ] ufcpp.net/study/dotnet/wpf_uielement.html 傾斜とかもできるので上辺もしくは下辺を短くするとか できるかなあと思ったんですが無理ですかね?
649 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:04:59 ] Expression Blend で簡単に星形のボタンとか作れるみたいだね。
650 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:09:59 ] ジオメトリの作り方がわからないから四角の変形で作りたいっていうなら アフィン変換使いなよ自分で計算してな
651 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 08:48:31 ] Blend使えればベストだけどボタンぐらいならXAMLだけでなんとかなる。 ContorolTemplateを書けばいいだけでサンプルも結構転がってるから。 あとエッセンシャルWPF読んどけ
652 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 09:41:08 ] >>648 それは線形変換で表現できないから無理 高校数学C参照
653 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 13:08:53 ] 文字単位で選択するメソッドがないので作ってみた。だが、どうも、遅いような気がする。これより早い方法があったら教えてほしい。 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; }
654 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:05:53 ] >>649 >>650 >>651 ありがとうございます。 しかしここまでGUIをいろいろ変えやすいとなるとデザインセンスないと きついですね・・・
655 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:47:52 ] 宇宙仮面のHP エラーでまくり
656 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:03:56 ] RadioButtonをC#からCheckする方法ありますか?
657 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:07:39 ] あるよ
658 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:20:09 ] >>656 XAML側でコントロールに名前(Name="hoge")とかやれば C#側から従来のWinFormのようにいじり放題
659 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:38:00 ] でも実際にはバインディングオブジェクトのプロパティの方を操作するよね
660 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:41:36 ] WPFは要素にName付けたら負け
661 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:46:27 ] それなんてみすりーど。
662 名前:656 mailto:sage [2010/04/26(月) 21:22:55 ] >>657-661 >>658 さんの方法以外はどのように書けばいいんでしょうか?
663 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 21:38:08 ] 気にせず名前付けたらいい
664 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:08:38 ] >>660 コードビハインド使ったら負け
665 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:53:01 ] 真の勝者はXAMLを使わない
666 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:54:50 ] blend+コードビハインド 都会派はこれ
667 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:55:03 ] ソフトなんか他人に作らせるよね真の勝者なら。
668 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:57:01 ] こだわりのソフト作成なら至福だろ 作らされてるなら敗者
669 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:27:42 ] WPFの場合 プログラマーはバインド関連をマスター デザイナーはXAML関連をマスター そんなところですかね?
670 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 02:18:51 ] BeginAnimationのタイミングが異なっても、 アニメの動きのタイミングを同期させる方法ってありますか。
671 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 04:59:26 ] あるよ
672 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 08:28:30 ] INotifyPropertyChangedから依存プロパティへのバインドが機能したりしなかったりする わけがわからない
673 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 09:00:47 ] >>669 正解じゃない。 プログラマーはバインド関連とXAML関連をマスター 。
674 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 22:14:00 ] XAML自体はマスターするには.NETプログラミングに習熟してないといけないからデザイナには酷 デザイナーはExpression BlendとXAMLの基礎事項をマスター
675 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:05:19 ] だな。MSはデザイナがXAMLを触らなくても大丈夫なようにツールを揃えた方が良いだろね。
676 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:08:47 ] WPFのバインディングは勉強すればするほど魅力的なんだよな C#のコントロールにも一応項目あったけどここまで使えたっけ?
677 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:15:35 ] デザイナが実際には動かさないスタイルを自由奔放に作成して 上司は「デザイナの作った物がそのまま動く!素晴らしい!」と言い出して 結局はプログラマが地獄を見る。そういう代物だろ?
678 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:17:38 ] うーん まあ前ほどは地獄をみないんじゃないかな バインディングが強力なのでいい感じだよ
679 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:17:43 ] そこは誤解がないようにちゃんと主張しろよ
680 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:18:51 ] .NET 4.0 では NumericUpDown コントロールはサポートされますか?
681 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:19:17 ] デザイナーが作る範囲は所詮はwebページで言えばhtmlに毛の生えたことしかしてないからなあ
682 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 01:14:12 ] .NET4な。CLRは4.0。
683 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 01:48:52 ] blend上で動くなら何も心配しなくていいんじゃないの何かあるの?
684 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:07:24 ] www.atmarkit.co.jp/fdotnet/vblab/uiframework_02/uiframework_02_04.html 上のサイトの中央付近から始まる「コレクション・オブジェクトへのバインド」のところを 動かそうとしたのですが下記のようなエラーとなり動きません。 >エラー 1 値 ' {Binding}' をプロパティ 'ItemsSource' に割り当てることができません。 >型 'IEnumerable' のプロパティ 'ItemsSource' は文字列として指定できません。 どのように対処すればよいのでしょうか?
685 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:14:01 ] >>682 .NET 4 と .NET 4.0 の違いを詳しく教えてください。 区別すべきなのでしょうか?
686 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:15:10 ] .NET 4.0 とかくことは意味があると思いますが、 .NET 4 と指摘していることについて詳しく教えてください
687 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:19:37 ] >>684 素直にXAMLで書けよ
688 名前:684 mailto:sage [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 質問に対する答えになってないと思いますが・・・
689 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:37:07 ] VS2005 / .NET2.0 しか許されない環境で、 MVVMを模倣して手動でモデリングしたクラスプログラミングをすることは効率化になりますか?
690 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:37:15 ] ガベージイン、ガベージアウト
691 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:43:57 ] >>685-686 「.NET Framework 4」が正式名称。 .NET 4.0と言っても問題なく通じるので実用上の問題はない。わざわざ指摘する程の事でもないだろ>>682
692 名前:689 mailto:sage [2010/04/28(水) 03:17:09 ] >>74 が気になるなぁ。リフレクション調べてみるか…
693 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 03:21:53 ] >>692 目指す目標としてXAMLなどがあるんだし、それと同じ仕組みにすれば MVVMも可能じゃないかな? まあ自前であれこれするより本当はWPFにするべきなんだが ところでなんでそんな古い環境にこだわらないといけないんだろうw
694 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 05:26:27 ] VとVMの疎結合さえ保てればとりあえずMVVMって言えるのかな? ・Viewを定義する「なにか」を設計する (WPFではXAML) ・「なにか」からViewを生成するライブラリを実装する (WPFではSystem.Presentationとかかな?) ・「なにか」と実行時バインドする方法も実装する (依存プロパティみたいな仕組み。ここでリフレクションががっつり登場) マンドクセ・・・ XAMLの仕様はそのまま使って.net 2.0 WinFormsでもViewが構築できるライブラリ作れば それなりに需要は・・・ないか
695 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 05:34:57 ] 一番重要なのはMとVVMと間のデカップリングだと思うよ。
696 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 05:37:58 ] そういえば依存関係を切り離せるコンテナってあったよね? あれは使えないの?
697 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 06:30:25 ] ざっくりいうとVMはVからのMに対するブリッジって認識だがよろし? >693 ぶっちゃけマシン性能にもよるんだろうが未だにWPF遅くね? 頻繁な更新が必要なデイトレアプリみたいなもんとか向いてなさそうなんだが。 >694 そげんな感じのもん作ったお。未だに2000とかにも配慮しなきゃいけなくてな( ^ω^)・・・
698 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 06:42:25 ] DIコンテナは未だによくわからん・・・
699 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 07:39:00 ] >>693-697 thx. 2005なのは、そういう環境でWindowsXpとWindowsCEの開発レッスンを受けてますw 自分が2000使ってるのでその点も嬉しいかなw
700 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 10:36:39 ] >>696 CAL(Prism)なんかはUnityのDIコンテナ使ってるよ。 .NET4で追加されたMEFもかな、仕組みはDIコンテナっぽいが。
701 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 10:46:10 ] ブラウザアプリでエクセルを操作するプログラムが入っててエクセルオブジェクトバージョンが違ってる人がアドレス開いてアプリ操作したらどうなるの?
702 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 10:52:10 ] WPFが描画にGPUとCPUどっちを使ってるかどうすればわかるんですか? 自分のグラボがWPFに対応出来てるかしりたいんです
703 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:52:20 ] >>702 WPF のパフォーマンス プロファイリング ツール msdn.microsoft.com/ja-jp/library/aa969767 (VS.90).aspx
704 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 13:55:32 ] 依存関係の向きがV→VM→Mとなってればいいだけのことで VのコードビハインドでVとVMを手で結びつければバインディングはいらないよ コマンドはVMのメソッドを呼び出せばいいだけ
705 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:11:36 ] MVVMの目的はVMを単体テストすることだよ それが必要ないんだったらコードビハインドをVMとみなして XAMLで自身のプロパティにバインドするだけでいい それが本来WPFで想定されていたバインディングの使い方
706 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:12:00 ] C++ と XAML の組み合わせで使えないのはなんで?
707 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:22:27 ] WPFはマネージコード専用だから C++/CLIで使えないのは単にMSにやる気がないから WPFはアンマネージドな世界との相互運用がしづらいしものすごく高レベルなので わざわざC++/CLIから使うというのはちょっと考えられない
708 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:27:11 ] >>703 WindowsSDKツールのV6.0A V6.1の両方ともWpfPerf アプリケーションが入ってません どのSDKですか?
709 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:30:10 ] ブラウザアプリでファイルにアクセスできないと何も出来なくないですか 同一サーバー上のファイルにアクセスするにはどうすればいいんですか
710 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 15:39:52 ] >>709 下手に許すとローカルのファイルをいじり放題。その気になればスパイウェアも仕込み放題ということになってしまうから、それはできないことになってる
711 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 16:12:42 ] >635で質問したものだが、こういう風にすることでとりあえず解決した ideone.com/OemER
712 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 19:15:20 ] >>708 V6.0 か V7.0。 以前は単体でもダウンロードできたけど、今は出来ないみたい。 (windowsclient.net/wpf/perf/wpf-perf-tool.aspx の previous version of WpfPerf)。 SDK を入れるなら Win32 Development Tools だけ入れればいい。
713 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:57:54 ] XAML:<ListBox ItemsSource="Binding ."/> 結果: B i n d i n g . あぁそうか…stringもIEnumerableだったな… ってこんなんアリなのかw
714 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:35:19 ] ちょっとワロタw
715 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 11:29:33 ] >>712 できたありがとう ハードウェアレンダー 1 になってた サンプルサイト見てるとカクカクだから絶対CPUレンダーだと思ったのに・・・
716 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:32:32 ] Shazzam(WPF/Silverlight用のシェーダエディタ)良いね シンプルだけどWPFやSilverlightのシェーダ書くのには十分 C#側のコードを自動生成してくれる WPFの見本みたいなかっこいいインターフェイス
717 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:15:45 ] WPF入門者用のサイトいくつか教えてくれ
718 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:20:07 ] ゲームパッド使えるの?
719 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:25:12 ] >>718 XNA+WPFでいけ sorceryforce.com/xna/tips_xnaonwpf.html
720 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:28:45 ] >>717 ここだなあ www.atmarkit.co.jp/fdotnet/vblab/uiframework_01/uiframework_01_01.html WinFormで動的にコントロール追加したりオーナードローとかやったことある人なら それほど違和感なくやれると思うがこれからって人は2010のマウスでデザインできる ってを利用した方がいいかもね〜
721 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:40:11 ] XNAだとXBOX用コントローラしか使えない DirectXは参照できたからそっちで攻めるしかないんじゃない
722 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:50:42 ] >>721 PS2パッドも使えるわ 適当なこと言うな
723 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:54:59 ] >>723 使えねえよ
724 名前:723 mailto:sage [2010/04/29(木) 22:57:13 ] >>722 つ、使えないと思います
725 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:58:27 ] 訂正来てよかったぜ どう突っ込んでいいか悩んだぜ
726 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:58:49 ] いやいや現に使ってるしw なにいってんの?
727 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:01:09 ] もしかしたら古いコンバーター使っているんじゃないのか? 1年前に買った奴だと普通に使えたわ
728 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:40:58 ] >>726 そういうのもう良いから。 しかし DirectInput に未対応なのはなんでなんだろね。
729 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:45:29 ] XNA+DirectXならXBOXコン以外使える WPF+XNAならXBOXコンしか使えない
730 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:48:59 ] >>720 全部読んでサンクス 読んで思ったのが stackpanelに複数配置されたコンテンツを そっくり別のコンテンツに取り替えるようなのって xamlじゃ無理? 画像を表示してた場所をすべてボタンに変えるとか そういうのはやっぱりC#でやるのかね 決まった雛形だら自由に作れるような感じだけど GUIの表示をごっそり変えるのはどうするのかな 次はバインド読んでみるか
731 名前:デフォルトの名無しさん [2010/04/29(木) 23:50:28 ] ListBox.ScrollIntoView を使うと、指定したアイテムを画面内に持ってくることができますが、 一番端に表示されます。 これを一番端ではなく、もうちょっと内側(2、3個要素が見えるような位置)にしたいんですが、 どうすればよいでしょうか?
732 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:50:34 ] >>729 ああ、そういうことか
733 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 23:53:22 ] >>731 そういうかゆいところに手が届かないこと多すぎるよな それの対処にやたら時間かかって先に進めないのが すごくイラつくわ コアの部分に全然時間かけれない
734 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:05:49 ] 2,3個上の要素を指定すればいいのでは・・・
735 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:11:44 ] やってみたら例外がでた!→範囲内に丸めろよ… やっと初心者がWPFをやる時代が到来胸が熱くなるな
736 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:46:35 ] WPF みたいな一部でしか使えないものは危険。
737 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:53:21 ] 意味わからん
738 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:00:54 ] >>718 >>729 このスレならどうせWindows専用ってことだろうから joyGetPosをP/InvokeすればXBOXコントローラ以外も使える。 Windows 95から存在するAPIなので安心。 ttp://msdn.microsoft.com/ja-jp/library/cc410473.aspx
739 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 10:12:31 ] WPF勉強しているんだけど 初心者にはあえてこちらの方がお勧めのような気がする GUI部分とロジック部分を自然に分離して記述するから ソースも見やすくなりそう
740 名前:デフォルトの名無しさん [2010/04/30(金) 13:01:04 ] 実際に初心者に使わせたら大半をコードビハインドに記述、 ViewModelでViewを生成し、 ViewがViewModelのコントローラという素敵構造にしたんだが…
741 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 13:18:34 ] >>720 これずーっと読んでいって 第 3回 “見た目”を決めるリソースとスタイル で詰まった むずぅ
742 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 13:24:51 ] >>741 そう? WinFormでもImageListなんてあるけどあれの汎用版みたいなもんでしょ
743 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 13:26:15 ] おっと途中になった スタイルはCSSと似てるし
744 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:50:21 ] みんなExpression Blen使ってるの?
745 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 21:31:35 ] >>744 これからWPF試してみたいのでExpression Blend 4が早くでないかなと思ってる。 VS10が出たし、もうすぐだと思ってたんだがアナウンスがないな…