5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4

1 :デフォルトの名無しさん:2009/06/19(金) 13:08:09
あたらしいGUI FW、WPFについて語るすれ。
.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 - March 2009 Release
ttp://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25047

関連スレ
Microsoft Silverlight その4
http://pc12.2ch.net/test/read.cgi/tech/1244812356/

過去スレ
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/

2 :デフォルトの名無しさん:2009/06/19(金) 20:29:05
>>1

3 :デフォルトの名無しさん:2009/06/19(金) 23:07:43
ContextMenu に ItemsSource と ItemContainerStyle を設定しました。
ContainerStyle は下記のようにしました。

 <Style x:Key="menuItemStyle" TargetType="{x:Type MenuItem}">
  <EventSetter Event="Click" Handler="MenuItem_Click" />
 </Style>


サブメニューがない項目ではクリックイベントが発生するのですが、
サブメニューがある項目でもクリックされたことを知りたいのですが
どうすればよいのでしょうか?


4 :デフォルトの名無しさん:2009/06/20(土) 02:18:40
前スレの最後哀れ

5 :デフォルトの名無しさん:2009/06/20(土) 12:06:48
>>前スレ1000
なんて恐ろしい子ww

6 :デフォルトの名無しさん:2009/06/22(月) 00:09:48
前スレ、もう落ちてるよ

7 :デフォルトの名無しさん:2009/06/22(月) 17:34:16
1000 名前:デフォルトの名無しさん[] 投稿日:2009/06/20(土) 01:18:06
1000なら、Visual Stido 2010が開発失敗して発売大幅延期、
WPFが使い物にならないと証明される

1001 名前:1001[] 投稿日:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

8 :デフォルトの名無しさん:2009/06/22(月) 18:28:07
わざわざ張らんでよろし

9 :デフォルトの名無しさん:2009/06/22(月) 19:45:57
ザメルって、なんかエロいから人前で言いにくい
いまのところ開発で XAML 使ってないから大丈夫だけど

10 :デフォルトの名無しさん:2009/06/22(月) 19:47:21
ザムルってよんでた

11 :デフォルトの名無しさん:2009/06/22(月) 19:49:04
ザムルだろう
eはどっからでてきた

12 :デフォルトの名無しさん:2009/06/22(月) 20:55:22
エレメントが LMN(el em en) の読みから来てるようにML を emel と呼んだんだろ
The ML とも通じるからな。ただの音遊びだが

13 :デフォルトの名無しさん:2009/06/22(月) 21:17:12
>>11
ある本には
pronounced zammel
と書いてある。

14 :デフォルトの名無しさん:2009/06/22(月) 22:15:10
日本語ではザムル

(XAML) ("ザムル" と読みます)
http://msdn.microsoft.com/ja-jp/library/cc295302.aspx
XAML (pronounced "zammel")
http://msdn.microsoft.com/en-us/library/cc295302.aspx

15 :デフォルトの名無しさん:2009/06/22(月) 22:42:13
自分で作ったコントロール(Imageを継承)をxamlで使うにはどうしたらいいの?

16 :デフォルトの名無しさん:2009/06/22(月) 23:10:53
CPUがCore 2 Duo E6600のPCを使ってるんだけどXAMLエディタが重くて使いにくい
どの程度のCPUなら快適に使えるんだろう?

人によって快適さの基準は違うと思うけど、
新しいPCを買う時の参考にしたいので、使ってるPCと快適さを教えて欲しい

17 :デフォルトの名無しさん:2009/06/23(火) 00:06:27
>>16
i7だけど重いよ
Blendの方が1億倍マシ

18 :デフォルトの名無しさん:2009/06/23(火) 00:21:57
そりゃ酷いな

Blend3でIntelliSenseもサポートされるみたいだし、VS1本でやるのは諦めるか・・・

19 :デフォルトの名無しさん:2009/06/23(火) 00:32:54
Blendも無料版だしてくれよバルマー

20 :デフォルトの名無しさん:2009/06/23(火) 00:46:06
MS開発者のビデオ見てるとザメルって言ってるよね

21 :デフォルトの名無しさん:2009/06/23(火) 01:09:47
でぃれくてっくすと、だいれくとえっくすじゃ大違いだが、
XAMLはそんなに違わない。

22 :デフォルトの名無しさん:2009/06/23(火) 07:14:05
なんだよ、このスレは
xamlのスレだろ

>>15に答えてください

お願いします

23 :デフォルトの名無しさん:2009/06/23(火) 10:04:09
ざめる

24 :デフォルトの名無しさん:2009/06/23(火) 10:24:32
いいよ、もう
数時間格闘した結果自己解決したから
お前ら役に立たないな

25 :デフォルトの名無しさん:2009/06/23(火) 10:24:49
初めてWPFで開発することになり、色々調べています。
やりたい事は、ユーザーにxamlで画面を作成してもらい、C#でそれを読み込み表示するアプリを作りたいです。

色々と調べてみたのですが、イマイチピンときません。
宜しければ何かヒントを頂けると助かります。

26 :デフォルトの名無しさん:2009/06/23(火) 10:41:48
>>25
イチから勉強したほうが

27 :デフォルトの名無しさん:2009/06/23(火) 17:47:02
>>25
なんだxamlを書いてもらうのか、つまらん

28 :25:2009/06/23(火) 23:39:57
とりあえずXamlReader.Loadとかで試したら多少できそうです。
ただ、xamlをの頭の部分をWindowsからCanvas等へ多少手直ししないといけないみたいで、
少しやりたい事多少外れてしまいます。
>>26さんや>>27さんの反応から簡単にできるっぽいので引き続き勉強してみたいと思います。

29 :デフォルトの名無しさん:2009/06/24(水) 00:08:34
XAMLってすごいですね。
外観の自由度もさることながら、
コントロールの組み合わせも自由なところが。。
ただ、どういう組み合わせが魅力あるUIなのか想像できない。

ComboBoxとかListBoxなんかはWrapPanelの中にImage+TextBlockでとかでいいとか
ありきたりな想像は出来るんですけど、それ以上のアイデアがないというか(見たことないからか..)
ただ、DataGridコントロールのグループ化とか詳細表示のような機能には期待している。

30 :デフォルトの名無しさん:2009/06/24(水) 00:23:09
>>29
ボタンの中身を画像とか、やろうと思えばとことんカオスな事ができるからねぇ。
そういやその自由度を使って、VS2010を痛IDEに、ってやってたところがあったようなw
インテリセンスのポップアップの見た目をアニメキャラにしていたとオモタ。

でも、カオスにできすぎて、他人の書いたxamlは大抵読むのに苦労するw

31 :デフォルトの名無しさん:2009/06/24(水) 00:29:23
そのうち、XAMLデザインパターンとか出てくるんでしょうかね。

32 :デフォルトの名無しさん:2009/06/24(水) 00:38:25
ボタンの中身を画像なんてUSERでもできるだろ。
ボタンの中身をテキストボックスとかのほうが恐ろしい。

33 :デフォルトの名無しさん:2009/06/24(水) 09:51:35
>>32
ちょw その組み合わせはまずいでしょう


質問ですが、WPFとSilverlightのコントロールの差異がぱっと見 わからないんですが、
この辺の一覧表とかあったりするんでしょうか?
自分でコツコツ調べるしかないかしら・・・

(例)
WPF Silverlight 備考
Label ○ ○ 同等
TextBox ○ ×
ListBox ○ ○ Silverlight側は○○が無い
ComboBox × ○
ViewBox ○ ○ WPF側は○○が無い
:
:


34 :デフォルトの名無しさん:2009/06/24(水) 11:32:05
http://wpfslguidance.codeplex.com/
でコントロール以外も含めたWPFとSilverlightの違いが解説されている。

が、あまりにも違いが多いため、69ページのPDFになっているので注意。

35 :デフォルトの名無しさん:2009/06/24(水) 11:38:55
>>34
ありがとうございます。

36 :デフォルトの名無しさん:2009/06/24(水) 23:10:55
>>31
うんざりですね

37 :デフォルトの名無しさん:2009/06/25(木) 16:53:57
ActualWidth、ActualHeightを変更するにはどうすればいいですか?
Width,Heightに値を入れてもすぐには変化してくれません

38 :デフォルトの名無しさん:2009/06/25(木) 21:50:58
<cars>
 <car>
  <maker>トヨタ</maker>
 </car>
 <car>
(以下略)
<cars>

みたいな xml の maker を ListBox にバインドしました。
トヨタ車はいっぱいあるので重複して表示されてしまうのですが、
重複をのぞいて表示するにはどうしたらよいですか?

39 :デフォルトの名無しさん:2009/06/25(木) 22:17:02
重複を除いたものをバインドする

40 :デフォルトの名無しさん:2009/06/25(木) 23:06:36
トヨタ車が重複するのは当然の真理

41 :デフォルトの名無しさん:2009/06/26(金) 17:38:52
>>37
果報は寝て待て

42 :デフォルトの名無しさん:2009/06/26(金) 19:06:51
<RowDefinition Name="rd" Height="24" />
<RowDefinition Height=rd.Heght />

のようなこと出来ないんですか?

43 :デフォルトの名無しさん:2009/06/26(金) 19:28:38
<RowDefinition x:Name="rd" Height="40" />
<RowDefinition Height="{Binding ElementName=rd, Path=Height}" />

44 :デフォルトの名無しさん:2009/06/26(金) 19:50:11
>>28
まだ悩んでる?

45 :デフォルトの名無しさん:2009/06/26(金) 19:59:56
MSDN Forumに行ったっぽいよ

46 :デフォルトの名無しさん:2009/06/27(土) 13:58:14
そうか、ならいいか

47 :38:2009/06/27(土) 14:57:03
>>39
なるほど。
思いつかなかったw
ありがとう。

48 :デフォルトの名無しさん:2009/06/27(土) 15:00:20
WPF の XPath って
> person[sex='man']
みたく書けないみたいだけど、
ノードの絞り込みしたいときはどうするの?


49 :デフォルトの名無しさん:2009/06/27(土) 15:16:34
使えるよ ただし一部文字にエスケープ必要
Binding.XPath のサンプルにある コメントアウトされてるけど

50 :48:2009/06/28(日) 10:50:17
>>49
レスありがとう。
教えてくれた方法で無事できました。
感謝。

51 :デフォルトの名無しさん:2009/06/28(日) 12:56:08
<maker>トヨタ</maker>

というデータを表示しようとして下記の DataTemplate を作りました。

<DataTemplate>
 <StackPanel Orientation="Horizontal">
  <TextBlock Name="tbCaption" Text="{Binding XPath=local-name()}"></TextBlock>
  <TextBlock Name="tbValue" Text="{Binding XPath=text()}"></TextBlock>
 </StackPanel>
</DataTemplate>

tbValue はちゃんと取得できていて"トヨタ"と表示されるのですが、
tbCaption には maker と表示したいのですが、local-name() ではだめみたいです。
どうすればよいでしょうか?

52 :デフォルトの名無しさん:2009/06/28(日) 19:06:12
どんだけトヨタ推しなんだよ

53 :51:2009/06/28(日) 19:30:11
すいません。じゃ、
<maker>光岡自動車</maker>
でお願いします。

54 :デフォルトの名無しさん:2009/06/29(月) 00:10:14
<GridViewColumn Header="Text" Width="300" DisplayMemberBinding="{Binding XPath=.}" />

とすると、バインディングされてるデータが

<List>
 <Item>Foo</Item>
 <Item>Bar</Item>
</List>

のとき、FooBar と表示されます。
これを Foo/Bar と表示したい(間に文字を入れて連結したい)んですが、
Converter を作る以外に方法ありますか?

55 :デフォルトの名無しさん:2009/06/29(月) 09:52:38
CellTemplateを書く

56 :デフォルトの名無しさん:2009/07/09(木) 07:41:07
フォントファミリからBaseUriを取得したいけど
作成時にUriを指定していない場合はBaseUriはnullになってしまう。
>var family = new FontFamily("メイリオ");
>family.BaseUri; // null!

Fontsからだと、BaseUri付きのファミリが取得できるかも?と思って試したけどnull
>var q = Fonts.SystemFontFamilies.Where((val) => val.BaseUri != null);

断念して妥協するか、システムフォントを片っ端から調べるか・・。

57 :デフォルトの名無しさん:2009/07/12(日) 08:22:10
今まで専らMFCでプログラミングしてきたんだが、
CDocument的なものはどこに置くべき?
ウィンドウのコードに依存プロパティとして実装?

もうWPFわけわからんw

58 :デフォルトの名無しさん:2009/07/12(日) 10:56:23
自分でDocumentManagerみたいなのつくっとくべ気だろ。

59 :デフォルトの名無しさん:2009/07/12(日) 10:57:59
>>58
質問が分かりにくくてすまん。
そのインスタンスはどこに保持するのかって質問なんだ。

60 :デフォルトの名無しさん:2009/07/12(日) 11:06:21
この辺が参考になるかな。
http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx

更新のない一方向の情報なら
XmlDataProviderを使って直接バインドしてしまうことも出来る。

61 :デフォルトの名無しさん:2009/07/12(日) 11:09:26
>>60
なかなか難しいな
頑張って解読してみる
ありがと!

62 :57:2009/07/12(日) 16:17:29
>>60
読んでみた

Model-View-ViewModelでやると、
ViewModel同士の同期が非常に煩雑になる気がするんだがそうでもない?
>>60のサンプルでも煩雑になってる気がする)

本屋に行ってWPFの本を探してみたが
どれも簡単なコントロールやスタイルの組み方までしか書いてねぇ。

63 :デフォルトの名無しさん:2009/07/12(日) 19:00:24
ここはexpression blendの使い方の質問してもおkな場所か?

64 :デフォルトの名無しさん:2009/07/12(日) 20:09:07
いいえ

65 :デフォルトの名無しさん:2009/07/12(日) 20:39:27
>>62
俺も綺麗なやり方が分からず悩みどころ。

あとVとVMの連携が必要な所も酷いことになる。
例えば、ボタンを押したらダイアログを表示、をやろうとしたら
ダイアログに対応するVMを作るのと、ダイアログの表示処理は誰がやるんだろう?
選択肢を選んだら即時ダイアログを閉じる場合、VMへの値の反映をバインドでやるとすると
ダイアログを閉じるのはどうやるんだろう?

って感じで複雑な物を作ろうとするとV→VMが依存しまくり。
うまく行く設計方針とかないのかしら。

66 :57:2009/07/12(日) 22:06:24
もうMVCで書いてしまおうか。
それともフレームワークのようなものを作れば
MVVMでも多少ましになるのかな。

67 :デフォルトの名無しさん:2009/07/13(月) 01:16:24
>>65
コマンドは使ってるんだよね?

>例えば、ボタンを押したらダイアログを表示、をやろうとしたら
>ダイアログに対応するVMを作るのと、ダイアログの表示処理は誰がやるんだろう?
Vはコマンドを発行するだけ(VM側の実装を知らなくていい)
コマンドを受け取って、ダイアログのV,VMを作って呼び出すのはVMの役目。

>選択肢を選んだら即時ダイアログを閉じる場合、VMへの値の反映をバインドでやるとすると
>ダイアログを閉じるのはどうやるんだろう?
その程度のやつならVで閉じちゃえば?

妥当性検証をパスして、OKボタン押すまでソースへの通知を遅らせたい(CANCEL時に無かった事にしたい)時とかはVMがないと見通し悪くなる。

68 :デフォルトの名無しさん:2009/07/13(月) 01:25:55
>>67
前者は、コマンドは使っているけれど
> ダイアログのV,VMを作って呼び出すのはVMの役目。
これって不味いのでは?
「V→VMの依存関係を一方向にすれば、テスト楽だよ」ってのがMVVMの味噌な気が。
VMがVを作ると、VM単体で単体テストしにくくなって不味いかと。

後者は、自分が選んだのもその方法(コードビハインドで全部処理)だけど、
コマンドを使うところと使わない所が出来るってのがちょっと嫌な感じ。

自分のMVVMのやり方じゃ7割ぐらいまでは綺麗に適応できるけど
3割ぐらいは外れるか、アドホックに汚いやり方で誤魔化しちゃってます。

69 :デフォルトの名無しさん:2009/07/13(月) 14:15:50
MVVM的な作り方では、下記のソフトもいい勉強になりますよ。(知ってたらスマンです)

http://www.codeplex.com/miniuml


70 :デフォルトの名無しさん:2009/07/13(月) 16:35:36
>>60
おお、いい記事を紹介してくれた。ありがとう。

71 :57:2009/07/13(月) 19:42:17
>>69
このUIかっけぇ
そしてコード勉強になる
ありがと

72 :デフォルトの名無しさん:2009/07/14(火) 00:06:15
>>69
トン、俺も読んでみる

73 :デフォルトの名無しさん:2009/07/17(金) 20:17:07
MSに点在するSilverlightのサイトを見ていたら
WPFと同じような使用例ばかり出てきて、WPFはどうしたいのかわからなくなる

74 :デフォルトの名無しさん:2009/07/17(金) 20:52:48
どっちも同じように書けるってこった

75 :デフォルトの名無しさん:2009/07/17(金) 20:56:16
>>73
ホストアプリを何にするかの違いだけ。

76 :デフォルトの名無しさん:2009/07/19(日) 00:06:09
RadioButtonのバインドって微妙で使いにくいですね。
ListBoxとかで作ったほうがすっきりするかしら・・・

77 :デフォルトの名無しさん:2009/07/19(日) 00:33:11
どうするんのがスマートなんだろうね。

自分の場合、Enumと合わせるなら他の人も作っている
EnumBooleanConverterをパクって使っている。これはかなり楽。

Enum以外のデータ、他の特に可変個数のデータ数の選択の場合は、
自作ViewModelクラス(選択肢の表示内容や対応付けられたデータを保持し
選択されたらイベントを飛ばす)を使っている。

78 :デフォルトの名無しさん:2009/07/21(火) 08:26:50
てすつ

79 :デフォルトの名無しさん:2009/07/21(火) 15:33:39
SilverLight3になってから、サンドボックス内とはいえローカルで実行できるとか・・・。
キャッシュとしてローカルのディスクにデータとか書き込めるのかね・・・。

80 :デフォルトの名無しさん:2009/07/21(火) 19:26:59
>79
2番目は IsolatedStorage でSL2の段階で出来る
ローカル実行は俺も知りたい

81 :デフォルトの名無しさん:2009/07/24(金) 13:08:02
WPFToolKit入れて、VSMを使いたいのだが、GotoStateでNull例外。
Silverlightと違ってGotoStateを明示的に呼び出す必要がないとか。
なのでCommonStatesグループを作って、Pressedのステートを作ってみたが無反応。
どうやったら使えるかな?

82 :デフォルトの名無しさん:2009/07/25(土) 20:56:49
WPFわけわかんねーなー。
特に作法みたいなのがさっぱりだ。

MVVMのテンプレートでコマンド登録する場合って、
ViewModelに起動させたいコマンドの数だけ、延々と
登録していくもの?

なんか同じコードばっかり書いてる気がする。


83 :デフォルトの名無しさん:2009/07/26(日) 17:11:49
>>68
MainView上のボタンを押してダイアログを表示の場合、
Vはコマンド発行するだけだよね?

コマンドの受け取り側のVMが新規ウィンドウのVとVM作ったら、
複雑になってMVVMにはならないのは理解できるんだけど、
もしそうなら、コマンドの受け取り側はどこに実装したらいいん?

コマンド用のVMを作って、コマンドは全部コマンド用VMを経由させるん?


84 :デフォルトの名無しさん:2009/07/28(火) 21:15:33
>>83
VMとVをきっちり分けるとなると、
1. Vに登録したICommand(VM)で操作を受け取って、
2. VMで表示するダイアログのVMを生成して
3. VMがVにデリゲート経由でダイアログのV生成を依頼して
4. Viewがデリゲート経由で受け取ったダイアログのVM+自分で作ったVで表示

全く美しくないw

85 :デフォルトの名無しさん:2009/07/28(火) 21:43:24
MiniUMLのソースを見ると、
Command(ViewModel)でファイルダイアログを呼び出してるけどね。

RelayCommandでは、ViewModelにメソッドを書けるのが利点なので、
新しいダイアログはViewModelで生成するいいんでないの?

ユニットテスト的にその部分の評価がしずらいのかもしれんけど。

86 :デフォルトの名無しさん:2009/07/28(火) 22:07:49
MVVMはあくまでデザインパターンであって規約ではないよというのが回答になりそうだなぁ。
Composite Application Guidanceのほうも勉強してみるかぁ。

87 :デフォルトの名無しさん:2009/07/28(火) 23:18:58
MVVMはModelとViewを直結するとモデルの編集なり何なりがゴリゴリ過ぎるから、その辺のつなぎ部分をそのビュー専用のVMにまとめてナイスに分けられたぜ、ぐらいの感じでいいかと。

88 :デフォルトの名無しさん:2009/07/28(火) 23:26:01
でも、Vと切り離してM+VMでテストできてラッキー!
てのは結構重要なことだと思うんだ。

89 :デフォルトの名無しさん:2009/07/28(火) 23:52:17
UIをUIAutomationとか使う方法でテストより、
論理的にテストできるってのは意味は大きいと思う。


90 :デフォルトの名無しさん:2009/07/29(水) 01:10:11
ところで、音楽とか動画を再生する処理って、MVVM だと View になるの?

91 :デフォルトの名無しさん:2009/07/29(水) 01:58:39
音楽の使い方によると思うが、メディアプレーヤーみたいに聴く目的ならVMを通じてModelが再生処理をするのかな。
UIを華やかにする目的で流すならViewかな。
動画はVMとView間で何を渡せばいいんだろう。

92 :デフォルトの名無しさん:2009/07/29(水) 05:05:03
多分そういうのまでMVVMに落とそうとするのが過剰適応なんだと思うよ。
強いて言えばコンテンツ本体にあたるストリームなり、動画ファイルそのものやURI,またその選択に至るための検索要件とかがM,VMにあたんじゃまいか。
それによる選択イベントを受けて再生する何かをViewがごにょごにょすればいい。M,VMはそれが再生されてることすら知らんと。
動画周りの処理とかをごにょごにょやる必要あるときはその処理周りまでがM,VMに入ってくるんだろうね。
いずれにしろ枠にはめようとするのがおかしな元かと。

93 :デフォルトの名無しさん:2009/07/29(水) 22:33:00
MVVMってどこまで使えばいいんだろうか

ViewModel-Modelのデータ構造の二重持ち(とその同期のとり方)とか、
チェックロジックのViewModelとModelの二重持ちとか、
色々と実際に適用しようとすると頭の痛い所だらけで困る

94 :デフォルトの名無しさん:2009/07/29(水) 23:58:04
ViewとModelのつなぎでしょ。
IValueConverterを実装したクラスがあれば、ViewModelなくてもいいと思ったりするけどね^^


95 :デフォルトの名無しさん:2009/07/30(木) 00:10:29
データの二重持ちはしない方がいいでしょ。キャッシュ的なものはありかも試練けど。
チェックロジックの2重持ちも阿寒と思う。
Lazyとかつかえばうまくまとまりそうな気もする。

96 :デフォルトの名無しさん:2009/07/30(木) 00:27:13
ターゲットによりけりだとは思うけど、ViewModelは編集中のデータを持っていて、
確定したらModelに書き戻す(キャンセルしたらロールバックする)って使い方が多いのでは?
となると編集中の状態がある場合、データ自体は二重に存在する気が。
# IDataErrorInfoを使う場合は、大抵これに該当すると思うけど

あとViewModelはModelに渡せないデータが渡された時に
エラーを表示したりModelに渡さないようにするためにチェックするし、
Modelも当然チェックする。となると必然的に両方がチェックをすることになるのでは?
処理自体はModelに持たせてViewModelがModelに問い合わせるという手はあるだろうけど、
チェック自体はなくせないと思う。

97 :デフォルトの名無しさん:2009/07/30(木) 11:32:26
チェックする内容がことなるんじゃね?
一緒なんだったらチェック内容もModelのメソッドとかにまとめるべきかと。

98 :デフォルトの名無しさん:2009/07/31(金) 01:10:41
Viewが入力を受けたときにConverterで例外が発生しても、
ViewModelはそれを知ることはできないよね?

値変更時にそれを取り消せる「取消」ボタンを作ったけど、
ViewModelがView上の値の変更を知ることができず使い物にならなかったw。
Bindムズカシイ。

99 :デフォルトの名無しさん:2009/07/31(金) 17:13:33
>>98
>Viewが入力を受けたときにConverterで例外が発生しても、
コンバータで想定外の型または値の場合は下記を返却するようにしてみては?
DependencyProperty.UnsetValue

>ViewModelがView上の値の変更を知ることができず使い物にならなかったw。
Binding ModeをTwoWayにしてる?


100 :デフォルトの名無しさん:2009/07/31(金) 19:49:17
TabItemの背景色を変更するには、どうしたらよいのでしょうか
Backgroundの値を変更しても変わらないのですが、これはどのバックグラウンドを変更しているのでしょうか

101 :デフォルトの名無しさん:2009/07/31(金) 19:57:09
TabItemの背景色って、どの部分を指してるの?
TabItem.Background変更したら普通にタブヘッダ部分の背景色変わったけど

102 :デフォルトの名無しさん:2009/07/31(金) 20:28:01
WPFの場合はBackround値で変わるね。
Silverlightの場合は、Template内のRectangleのFill値を変更しないとダメぽいが。。


103 :デフォルトの名無しさん:2009/07/31(金) 20:29:20
すみません、色は変更されていたみたいです・・
変更した色が白っぽい色だったので違いに気がつきませんでした、本当にすみませんでした。

ところで、タブがアクティブになっているとき?のタブヘッダの背景色の変更はどうすればいいのでしょうか

104 :デフォルトの名無しさん:2009/07/31(金) 20:46:06
TabItemのControlTemplateいじることになるかな
TabItem ControlTemplate の例 を参考に

105 :デフォルトの名無しさん:2009/07/31(金) 23:39:28
ありがとうございます
やってみます

106 :デフォルトの名無しさん:2009/08/01(土) 00:17:36
>>99
どもです。ちょっと手元に環境がないのですが
> コンバータで想定外の型または値の場合は下記を返却するようにしてみては?
なるほど。デフォルトコンバータ前提で考えてました。
自前でコンバータを作ってしまえば自由にできますね。
いっそViewModelのI/Fを例外が発生しないような型にしておいて、
ViewModelで変換までしてしまうという手もありかも。

> Binding ModeをTwoWayにしてる?
TextBoxに数値をBindしてMode未設定でしたが、これはデフォルトでTwoWayになっている気が。
View→Converter→ViewModel、のConverterの時点で例外が発生すると
ViewModelには全く処理が飛んでこないのでは?

デフォルトコンバータは、ViewとViewModelの整合が必要(=編集可能な値をBind)
かつConverterで例外が発生しうる状態では使えないか…うーん

107 :102:2009/08/01(土) 13:34:29
>>106
ViewModel側には例外を取得できないですね。そういった場合はView側で対処するのかも。
ValidationOnException=trueにすると、テキストボックス自体にはエラーになりますね。

(例)
<TextBox Margin="0" Text="{Binding Age,ValidatesOnExceptions=true}" />

108 :デフォルトの名無しさん:2009/08/01(土) 18:57:04
アプリケーションの設定はProperties.Settings.Defaultを通じて読み込み/保存できるようですが
任意のパスから読み込みんだり保存するにはどうすればいいのでしょうか?

109 :デフォルトの名無しさん:2009/08/01(土) 20:51:57
質問失礼します。
画面上のImageクラスに表示している画像データを
Effectを利用して描画結果を変換したものを
さらに画像データとして次のImageクラスに設定したいのですが
この場合RenderTargetBitmapを利用するのがベストでしょうか?

何かほかに手段などはかんがえられますでしょうか?

110 :デフォルトの名無しさん:2009/08/01(土) 21:07:08
MSDNのWPFフォーラムで聞いたほうが早いんじゃね?
あそこ過疎ってんの?

111 :デフォルトの名無しさん:2009/08/01(土) 21:09:37
>>109
Effectの適用タイミングがよく分からんが
次ImageのSourceに元ImageのSourceをバインドしてやりゃいいんじゃね?

112 :デフォルトの名無しさん:2009/08/01(土) 21:23:37
>>110
実はLiveIDもっていませんので、ちょっと作ってみることにします。

>>111
エフェクトがかかった後の画像をもう片方のImageに貼り付けたいかんじです。
元ImageのSourceをそのまま設定してもエフェクト前の画像が表示されました。

113 :デフォルトの名無しさん:2009/08/01(土) 21:29:35
<Image>
 <Image.Source>
  <DrawingImage>
   <DrawingImage.Drawing>
    <GeometryDrawing>
     <GeometryDrawing.Geometry>
      <RectangleGeometry/>
       </GeometryDrawing.Geometry>
        <GeometryDrawing.Brush>
         <VisualBrush>
          <VisualBrush.Visual>
           <Image>
             <Image.Effect>
              <BlurEffect/>
こうするとか?w
一番直接的なのはEffectを自作してしまうこと
1パスで変換を済ませるピクセルシェーダを書けば一発

114 :デフォルトの名無しさん:2009/08/01(土) 21:47:15
>>113
これをXaml上にかくのはご指摘のとおり直感的ではないですね。。
HLSLで簡単なエフェクトはかけるのですが
エフェクト変換後の画像データを
さらに別のエフェクト処理にかけたいとおもっています。

途中経過を画面でみれるようにしたいと思い質問しました。

115 :デフォルトの名無しさん:2009/08/01(土) 21:48:25
Imageを使う必要はあるの?
ImageでなくていいならFrameをネストすれば同じことできるけど

116 :デフォルトの名無しさん:2009/08/01(土) 21:57:18
>>115
途中経過を見てみたいと思いましてImageにしたいなとおもっていました。
Frameについては今はじめてしったコンポーネントなので、調べてみたいと思います。

117 :108:2009/08/02(日) 02:22:08
>>108
自己レス
ApplicationSettingsBase.Providersが実際の読み書きしてるみたいだから
独自のSettingsProviderを登録すればできそう。

118 :デフォルトの名無しさん:2009/08/02(日) 20:35:43
UserControlを作っていてわからないことがありましたので質問です。

方眼紙のような罫線を描くユーザコントロールを作成しております。

そこで、

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        .
        .
        .
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
<Grid>

のように、行・列の指定を記述出来るようにしたいと思っております。
もしよろしければ参考になるWebサイトやキーワードをお教えいただけますでしょうか・・・。

よろしくお願いします。


119 :デフォルトの名無しさん:2009/08/02(日) 20:41:13
どうするも何も,自分でColumnDefinitionsのようなコレクションを持って自分でレイアウトするんだよ
それと,UserControlでパネル作るのは無理でしょ
カスタムコントロールだな

120 :デフォルトの名無しさん:2009/08/02(日) 20:57:39
>方眼紙のような罫線を描くユーザコントロールを作成しております。
これが目的ではないでしょ?
具体的に書いてもらわんとわからんわ。

121 :デフォルトの名無しさん:2009/08/02(日) 21:03:47
汎用的なコントロールを作ろうとしてるなら,UserControlは使えないというか作法として使わない

122 :デフォルトの名無しさん:2009/08/02(日) 21:03:52
説明が下手で申し訳ないです。

>自分でColumnDefinitionsのようなコレクションを持って自分でレイアウト

はい、現在はXAMLからはせっていできませんが、
現在は仮実装でですが、GridSheetColumnDefinition や、
GridSheetRowDefinition といったクラスの
コレクションを、内部に作成しております。

これらの内容をC#記述したコードで適当に生成して、
罫線を引く所までは作成が進んでおります。

そこで、マークアップ拡張?というのでしょうか・・・

<GridSheet.ColumnDefinitions>というような記述で、

<GridSheet>
    <GridSheet.ColumnDefinitions>
        <GridSheetColumnDefinition/>
        .
        <GridSheetColumnDefinition/>
    </GridSheet.ColumnDefinitions>
    <GridSheet.RowDefinitions>
        <GridSheetRowDefinition/>
        .
        <GridSheetRowDefinition/>
    </GridSheet.RowDefinitions>
</GridSheet>

のように行・列の設定を行えたら良いなと持っております。


123 :デフォルトの名無しさん:2009/08/02(日) 21:17:08
パブリックプロパティでIList(非ジェネリック)を実装したコレクションを公開するだけでよかったと思うけど

124 :122:2009/08/02(日) 21:25:04
>>123
どもです、ためしてみます!

125 :デフォルトの名無しさん:2009/08/02(日) 22:47:12
GridのShowGridLines="True"で線引けるんだが、これでは不十分なのだろうか・・・

126 :デフォルトの名無しさん:2009/08/05(水) 19:35:52
ScrollViewerにStackPanel入れて、StackPanelにImageいっぱいいれてもスクロールバーが出てこないんだけど
どのプロパティを設定する必要があるんですか?

127 :デフォルトの名無しさん:2009/08/05(水) 20:03:06
ImageのStrechがFillになってるとかじゃない?


128 :デフォルトの名無しさん:2009/08/05(水) 20:09:03
ごめんなさい、ミスしてました
ScrollViewerのHeightに値いれてるつもりが、NaN入れてました
そこいじったら表示されました

129 :デフォルトの名無しさん:2009/08/08(土) 01:45:02
画面遷移でこけてしまったので、回避の方法を教えてください。

WPFで場面ごとにPageを用意してタブコントロールで切り替えていたのですが、せっかくのWPFなのでアニメーションとか付けてみようと思い
透明度などをストーリーボードで制御してフェードイン・アウトを作ってみたのですが、タブキーで非表示(フェードアウトした)Pageのコントロールにフォーカスが当たってしまいます。
これを回避するために一つ一つにフォーカス制御のプログラムを組んだのですが、今後Pageが増える事を考えると効率的ではありません。
何かスパッと書けて効率のいい方法はないでしょうか?

130 :デフォルトの名無しさん:2009/08/08(土) 02:24:25
・・・透明度0のあと非表示にとかしないの?

131 :デフォルトの名無しさん:2009/08/09(日) 02:52:15
すいません、抜けてましたorz
Visibilityプロパティもストーリーボードで透明度0にした後にFalseへ移るようにトリガで打ってあります。

ただ、このようにストーリやコントロールのテンプレートを用意しても、
コントロール側を制御するためのストーリーボードを用意する必要があるため複雑化は避けられません。
(プログラムでコントロール側のストーリーボードを作ればモジュール程度で収まるが折角のXAMLならXAMLだけで収めたい!(<x:Code>も避けたい))

WPFのサンプルが少なくこのようにしていいんだという自信がないため、
推奨される方法があるならそちらを優先した方がいいと考えています。

これはまだ.Net 3.5では実現できない話なのでしょうか?

132 :デフォルトの名無しさん:2009/08/09(日) 20:03:03
ShaderEffectを通じてHLSLに2次元配列を入力するのってもしかしてできません?


133 :デフォルトの名無しさん:2009/08/10(月) 18:54:32
WriteableBitmapとImageBrushを使ってブラシとして渡す

134 :デフォルトの名無しさん:2009/08/10(月) 22:29:20
MVVMの概念的にViewModelはIDisposableを実装すべきでしょうか?
ttp://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx
では使ってるのに、勉強のために見たMiniUMLでは使ってなくて
迷ってしまいました。

135 :デフォルトの名無しさん:2009/08/10(月) 22:47:02
必要なら実装すればいい。

136 :デフォルトの名無しさん:2009/08/13(木) 16:13:53
MediaElementのcontextmenuにアイテムを追加したいんですが
追加ボタンがグレーアウトしていて追加できません
XAMLエディタに手動で書き込むしかないんですか?

http://www.death-note.biz/up/f/5051.png

137 :デフォルトの名無しさん:2009/08/20(木) 17:37:17
WPFってVSだけだと難しいのかな

138 :デフォルトの名無しさん:2009/08/20(木) 17:56:38
んなこたない

139 :デフォルトの名無しさん:2009/08/20(木) 20:08:31
凝ったデザインにしない限り、VSだけで十分

140 :デフォルトの名無しさん:2009/08/20(木) 22:17:21
this.AddChild(new Button());
なぜこれでボタン表示できないのか分からない
WinFormsと違いすぎる

141 :デフォルトの名無しさん:2009/08/21(金) 01:48:56
サイズセットしないとだめなんじゃねーの?

142 :デフォルトの名無しさん:2009/08/22(土) 12:56:21
WPFテクノロジーの発想ってMicrosoftのウリジナルなの?

143 :デフォルトの名無しさん:2009/08/22(土) 12:56:47
HTMLが元祖です

144 :デフォルトの名無しさん:2009/08/22(土) 14:41:02
>>142
韓国起源ではない

145 :デフォルトの名無しさん:2009/08/22(土) 14:50:19
>>142
マイクロソフトも含めて今のソフト業界にはオリジナルと言う物はない。
全ては過去の技術の焼き直し。
ソフトウエアなんて本質的にはなんの進歩もしとらんよ。

146 :デフォルトの名無しさん:2009/08/22(土) 15:44:30
おとなのかいだんのぼる〜

147 :デフォルトの名無しさん:2009/08/22(土) 15:50:24
>>145
こういうしたり顔してる奴って会社とかで何も役に立たないくせに人のやろうとしてることに文句付けて嫌われてるんだろうな

148 :デフォルトの名無しさん:2009/08/22(土) 17:03:39
でも女性社員には人気あって、事務のかわいい新人のこといち早くやっちゃってたりするんだよね。

149 :デフォルトの名無しさん:2009/08/22(土) 17:52:22
他人の話なんざ興味ねぇよ。
マ板か喪男板でやれ

150 :デフォルトの名無しさん:2009/08/22(土) 20:10:16
NavigationService.Navigate()
これやるとクリック音が出るんだけど消すことは出来ませんか?

151 :デフォルトの名無しさん:2009/08/22(土) 21:23:58
人柱くんたちご苦労である。

152 :デフォルトの名無しさん:2009/08/27(木) 16:53:36
Storyboard使ってみたいんだけど、どこから手を出せばいいのか分からない
Blend無いと厳しいかな

153 :デフォルトの名無しさん:2009/08/31(月) 10:36:47
Blendなくてもいけるけど、やっぱBlendで設定したほうが楽だな。
とりあえず単純なものなら、DoubleAnimationをやってみればいい。

154 :デフォルトの名無しさん:2009/08/31(月) 14:07:32
ログオフ時などにApplication.SessionEndingでキャンセルしなければApplication.Exitが起きるとMSDNに書いてありますが
実際に試してみるとExitイベントが起きません。

private void Application_Exit(object sender, ExitEventArgs e)
{
 using (StreamWriter w = new StreamWriter(path, true)) { w.WriteLine("Exit"); }
}
private void Application_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{
 using (StreamWriter w = new StreamWriter(path, true)) { w.WriteLine("SessionEnding : {0}", e.ReasonSessionEnding); }
}

ファイルには SessionEnding : Logoff しか書かれません。
何が原因なのでしょうか?

155 :154:2009/08/31(月) 20:24:11
Microsoft.Win32.SystemEvents.SessionEndedイベントで処理できました。
MSDNに書いてあることは何だったんだ…

156 :デフォルトの名無しさん:2009/09/01(火) 00:54:19
てすと

157 :デフォルトの名無しさん:2009/09/01(火) 01:01:10
Width="Auto"で伸びきるのが使いにくい
コンテンツに合わせるのが筋じゃないのか

158 :デフォルトの名無しさん:2009/09/01(火) 01:22:33
>>157
Width="*" でええやん

159 :158:2009/09/01(火) 01:25:03
なんか色々勘違いしたらしい。忘れてくれ

160 :デフォルトの名無しさん:2009/09/01(火) 01:47:31
Stretchにしてるとかってオチではないよな

161 :デフォルトの名無しさん:2009/09/01(火) 10:05:47
コンテンツのレイアウトは親に基づいて計算されるからな
考え方が逆

162 :デフォルトの名無しさん:2009/09/01(火) 23:37:25
WPF標準UI初期値ださいんだよな。
理由はわかるけど、せめて初期テーマとかでWinForm並みにしてほしい。


163 :デフォルトの名無しさん:2009/09/01(火) 23:45:08
標準で付いてるテーマでXPやVistaっぽくはできる

164 :デフォルトの名無しさん:2009/09/03(木) 21:58:30
ListBox を使用して、下記のように ItemTemplate を設定しました。

<ListBox.ItemTemplate>
  <DataTemplate>
    <Border BorderThickness="1" BorderBrush="Black">
      <TextBlock Text="{Binding Name}"></TextBlock>
    </Border>
  </DataTemplate>
</ListBox.ItemTemplate>

こうすると、Border が TextBlock の大きさになってしまうのですが
Border の幅を ListBox いっぱいに広げたいのですが、
どうすれば良いでしょうか?

ちなみにウィンドウの大きさをユーザーが調整できるように
してあるので ListBox の幅は可変です。

165 :158:2009/09/03(木) 22:05:57
>>164
ListBox.HorizontalContentAlignment="Stretch"

166 :デフォルトの名無しさん:2009/09/03(木) 22:07:30
名前欄消し忘れたorz

167 :164:2009/09/03(木) 22:11:37
>>165
超感謝

168 :デフォルトの名無しさん:2009/09/06(日) 01:54:51
ListView で Binding 表示する時、 ListView の選択アイテム削除ってどうやってマスカ?

ListView / ListView.View / GridView とかやって
GridViewColumn / @CellTemplate で
ListView.Resource に定義した DataTemplate を指定。
テンプレート内 TextBlock / @Text に {Binding Path=myObj.member}
とかで表示させてるのだけど, ListView.Items[n] とかやって取れるのは
自分で ListViwe に突っ込んだ型そのものだったりするんですヨ.

while( listView.selectedIndex != -1 ){ listView.RemoveAt(listView.selectedIndex); }

で、途中までは事たりてたんだけど、選択アイテムの中に非削除対象としたいアイテムがあった場合、
それを回避するには index 記憶したり更新したり、遠回りな実装しか思い浮かばなくて困ってマス.

169 :デフォルトの名無しさん:2009/09/06(日) 02:09:18
何を言いたいのか分からないが、とりあえずお前が
ItemsSourceとObservableCollectionを理解できないアホ子なのはよく分かった。

170 :168:2009/09/06(日) 23:56:23
とりあえず解決シマシタ (無限ループしそうデスガ...). >>169 アドバイスありがとう. だけどよく分からなかった orz

.while (listView1.SelectedIndex > -1)
.{
. TestData td = listView1.Items[listView1.SelectedIndex] as TestData;
. if (td.removeOK != "yes")
. {
. ListViewItem lvi = listView1.ItemContainerGenerator.ContainerFromItem(td) as ListViewItem;
. if (lvi != null)
. {
. lvi.IsSelected = false;
. }
. continue;
. }
. listView1.Items.RemoveAt(listView1.SelectedIndex);
.}

171 :デフォルトの名無しさん:2009/09/07(月) 00:11:27
MVVMすら理解していないな、こりゃ

172 :デフォルトの名無しさん:2009/09/07(月) 19:38:23
半透明スッケスケのツールはもっと出回ってもいいと思う
2chブラウザとかIRCクライアントとか

173 :デフォルトの名無しさん:2009/09/07(月) 19:53:42
中途半端に詳しい人って重いとか過剰に気にするから…

174 :デフォルトの名無しさん:2009/09/07(月) 20:00:15
> 2chブラウザとかIRCクライアントとか
この辺半透明でも、正直読みづらくなるだけで俺は嬉しくないんだが…
一般的にはそうでもないの?

非アクティブ時に半透明はちょっといいかもしれん

175 :デフォルトの名無しさん:2009/09/07(月) 20:10:35
>>174
色次第だとは思う
背景が黒の50%で文字に100%のふちが付けばかなり見やすい

176 :デフォルトの名無しさん:2009/09/07(月) 20:42:07
ビジュアルノベル風か

177 :デフォルトの名無しさん:2009/09/07(月) 20:50:43
WPFではないけど、SSHクライアントPuTTYのxterm風透過やAero Glass効果のパッチとかはいいと思った。
(Aero GlassのほうはSS見ただけでまだ使っていないけど)

178 :デフォルトの名無しさん:2009/09/08(火) 07:24:21
TextBlockにBitmapEffectを使うとTextにstring.Emptyが入らなくなる

179 :デフォルトの名無しさん:2009/09/08(火) 11:08:37
TextBlockをFrameに入れてFrameにBitmapEffectを適用したら

180 :デフォルトの名無しさん:2009/09/08(火) 16:08:16
で、結局WPFはLONGHORNの頃に自分達に驚きを与えたクールなブラットフォームになれたんですか?

181 :デフォルトの名無しさん:2009/09/08(火) 16:10:48
>>180
縁の下の力持ち的なあれですよ

182 :デフォルトの名無しさん:2009/09/08(火) 19:03:13
WPF4.0でとりあえずある程度完成された形になるんじゃないかな

183 :デフォルトの名無しさん:2009/09/08(火) 19:45:52
WPFすげぇー
http://www.youtube.com/watch?v=MTfM5pmUrnU&feature=related

184 :デフォルトの名無しさん:2009/09/08(火) 20:20:23
<RichTextBox.Background>
    <ImageBrush ImageSource="xxx.png" />
</RichTextBox.Background>

このようにしてRichTextBoxに背景画像を表示しています
ユーザーが好きな画像に変更できるようにしたいのですが、どのようにしたらよいかわからないので教えてください

185 :デフォルトの名無しさん:2009/09/08(火) 20:34:31
>>183
見てきたけど、カッコいいね。
可視化することで、瞬時に状況把握ができる効果的な分野って結構あるんだろうなぁ
航空管制塔で使うようなソフトのところは、映画の一場面かと思った。


186 :デフォルトの名無しさん:2009/09/08(火) 21:07:35
>>184
<ImageBrush x:Name="backgroundImageBrush" …
のように名前を付ければWinFormsと同じようにコードビハインドからアクセスできる

187 :デフォルトの名無しさん:2009/09/08(火) 21:09:56
>>186
ありがとうございます

188 :デフォルトの名無しさん:2009/09/08(火) 21:43:57
でもさ。アドベンチャーゲームのテキストたらたら表示と同じで
メニューがいちいちアニメーションしたりするのって
忙しい時はウザいだけなんだよね。

おもちゃ用OSと仕事用OSとで分けてほしい。

189 :デフォルトの名無しさん:2009/09/08(火) 21:51:11
そういう固定概念のおかげでGUIは進化しないんだろうね

190 :デフォルトの名無しさん:2009/09/08(火) 21:52:52
でもVisual Studioのアニメーションは切ってるだろ?w

191 :デフォルトの名無しさん:2009/09/08(火) 21:53:16
切ってねえなあ

192 :デフォルトの名無しさん:2009/09/08(火) 21:56:08
固定概念な俺向けにマイクロソフトはちゃんとアニメーションを切れるモードを作ってくれているからな。
アニメーションするのがGUIの進化だと思うなら勝手にやっててくれ。

193 :デフォルトの名無しさん:2009/09/08(火) 21:57:47
Officeのイルカが叩かれまくったのがいい経験になってるんじゃないか?

194 :デフォルトの名無しさん:2009/09/08(火) 21:58:24
アニメーション自体は嫌いじゃないがVSのアニメーションはガクガクな上に時々変な表示になって気持ち悪いから切ってる
2010でWPFになったら改善されるんだろうけど

195 :デフォルトの名無しさん:2009/09/08(火) 21:59:09
VS2010っていつ発売なんだろう

196 :デフォルトの名無しさん:2009/09/08(火) 22:04:21
はるか昔にプレゼンで使われたVistaのコンセプト画像では
ウィンドウが波打ったり回転したり自在にアニメーションしてたのに、
実際出来上がってみたら斜めに並べるだけでした。
なぜなら、テスターにキモいって言われまくったから。

そしてそこまでスリム化したフリップ3Dですら、
やっぱりいらないと言われる始末。

197 :デフォルトの名無しさん:2009/09/08(火) 22:32:25
しょうじき、エクスポゼもすげーとか思うけど使いやすさから言うとAlt+Tabのほうがいい。
スノレパのエクスポゼ使った違う画面へのドラッグドロップはちょっと便利かと思ったけど。

198 :デフォルトの名無しさん:2009/09/08(火) 22:36:51
そういえばiPodのCover Flowも全然使ってないな

199 :デフォルトの名無しさん:2009/09/09(水) 00:03:28
アニメーション切るような奴はUIのこと何もわかってない

200 :デフォルトの名無しさん:2009/09/09(水) 00:10:36
アニメーションには挫折した。
普通のUIを普通に使う。

201 :デフォルトの名無しさん:2009/09/09(水) 00:23:53
切りたくなるようなアニメーションの使い方をする糞アプリがあるのも事実。
ピンポイントで使いこなせば強力だが、
下手糞が使うと邪魔だったりウザかったりクドかったり実に酷い物。

202 :デフォルトの名無しさん:2009/09/09(水) 00:27:13
実は未だにCUIでテンキーといくつかのコマンドで操作できるようにしてくれと言う
案件があったりする

203 :デフォルトの名無しさん:2009/09/09(水) 00:32:27
それはあるだろうね。なんでもかんでもアニメーションや視覚化は意味ないからね。
効率を求めるとCUIでテンキーとコマンドの選択肢は残るでしょう。

204 :デフォルトの名無しさん:2009/09/09(水) 00:38:48
Window直下のCanvasパネルをTransformで移動・ズームさせてるんですが、
表示されてる領域の中心に現在位置している座標を求めるのはどうすればいいでしょうか。
中心じゃなくても左上の座標がわかればいいです。
マウスポインタだとGetPosition(canvas)で簡単に求められるんですけど。

205 :デフォルトの名無しさん:2009/09/09(水) 00:40:51
ttp://blogs.msdn.com/llobo/archive/2009/09/08/wpf-webbrowser-awesome.aspx

206 :デフォルトの名無しさん:2009/09/09(水) 00:55:22
もうアニメーションのためにプロパティ作ったり
プログラム組むのはコードの難読化としか思えない

207 :デフォルトの名無しさん:2009/09/09(水) 01:19:11
アニメーションとプログラムを分離できんのがWPFのメリットなんじゃねーか

208 :デフォルトの名無しさん:2009/09/09(水) 07:29:09
WPFで作ったテキストボックスに入力値チェックを任せるのは問題ない?
regexみたいに制限をかけたい。



209 :デフォルトの名無しさん:2009/09/09(水) 09:46:17
Googleは正直嫌いなんだが、Chromeのタブ左右に動かすときの動きとかは好き。べつにChrome特有のもんじゃないけど。

210 :デフォルトの名無しさん:2009/09/09(水) 10:20:26
>>208
WPF的には良くない
バインディングのValidationを使う

211 :デフォルトの名無しさん:2009/09/09(水) 12:42:52
ChromeはWPFじゃないってのがすごいな。

212 :デフォルトの名無しさん:2009/09/09(水) 15:19:13
.NETでUXをやる時の有力な選択肢がWPFってだけの話さ
Googleみたいに巨大で体力のある企業なら、自社開発した方が自由にやれるしパフォーマンスUPにも繋がるだろう。

213 :デフォルトの名無しさん:2009/09/09(水) 19:19:47
UXをやるってなんか変な使い方だな。

214 :デフォルトの名無しさん:2009/09/09(水) 21:17:33
>>210
ありがとう!こういうのを知りたかった。
ちなみにWPFを勉強するお薦めを教えて欲しい。
Webでも書籍でもいいのでお願いします。

215 :デフォルトの名無しさん:2009/09/09(水) 22:49:31
EssentialWPFはほどよい程度のレベルで網羅してるのでお勧め。
正直表紙とかで損してると思う。

216 :デフォルトの名無しさん:2009/09/10(木) 00:17:04
>>215
確かに、あの 90 年代初頭っぽい CG の表紙は酷いな。
良著だけに、もう少し頑張って欲しかった。

>>214
書籍ではないが、CodePlex という MS 運営のコミュニティサイトから、
WPF 関連のプロジェクトをチェックする事をお勧めする。
自分の場合、MiniUML のソースが学習に役立っている。

217 :デフォルトの名無しさん:2009/09/10(木) 06:45:24
>>215
>>216
thx!チェックしてみる。

218 :デフォルトの名無しさん:2009/09/10(木) 08:12:18
>>217
ebook WPF
で検索すると幸せになれるかも

219 :デフォルトの名無しさん:2009/09/10(木) 20:37:43
>>217
え。なにこれ。無料で落とせたんだけど。
よくわからんがthx。


220 :デフォルトの名無しさん:2009/09/10(木) 20:43:57
pdf版は無料公開とか
海外は太っ腹だな

221 :デフォルトの名無しさん:2009/09/11(金) 00:35:59
Expression Blend3たのしぃぃぃぃ


222 :デフォルトの名無しさん:2009/09/11(金) 01:19:59
Expression Mediaはどこいっちゃったんだよーorz

223 :デフォルトの名無しさん:2009/09/11(金) 01:58:56
はよExpressionの製品版出荷しろよな -> MS
11月らしいが初旬であってほしい。

224 :デフォルトの名無しさん:2009/09/11(金) 02:05:08
Expression Blend Expressはでないのかのぉ

225 :デフォルトの名無しさん:2009/09/11(金) 03:00:37
対応は .NET3.5SP1 なんだな。 .NET4.0が出たらSP追加で出すんだろう、たぶん。

226 :デフォルトの名無しさん:2009/09/11(金) 10:32:07
VS2010がいつ頃出荷なんだろうか。
年末かなぁ

227 :デフォルトの名無しさん:2009/09/11(金) 20:50:11
WPFで作った簡単なアプリをatom Z520 + US15WなUMPCで動かしてみたら、
表示にゴミが出まくったり、ウィンドウリサイズに3秒ぐらいかかったりで使い物にならなかった。

UMPCで動かせないって、将来大丈夫なんだろうか…

228 :デフォルトの名無しさん:2009/09/11(金) 22:05:49
>>227
>マイクロソフトに“お仕置き”された5つのネットブック
>ハイスペックすぎると低価格のOSライセンスが搭載できない
http://www.computerworld.jp/topics/netbook/158129.html

>愛憎入り交じるマイクロソフトのネットブックへの思い
>ネットブックが売れるほど、シェアは上がるが売上高は減るというジレンマ
http://www.computerworld.jp/topics/win7/148490.html

この二つの記事がWPFがネットブックで動かすには
やや重いテクノロジである理由の回答(の一部)になるんじゃないかな?
あるいは、名著「イノベーションのジレンマ」の中にも出てくるけど
破壊的イノベーションの登場を阻止するために必要な措置だとか。


229 :デフォルトの名無しさん:2009/09/12(土) 01:32:02
WPFってフルスペックPC向けでしょう。


230 :デフォルトの名無しさん:2009/09/12(土) 01:56:55
今時のローエンドPCなら結構サクサク動くっしょ

231 :デフォルトの名無しさん:2009/09/12(土) 07:12:36
そこでSilverlightのOutOfBrowserですよ。
多分これどこでも動かせるアプリケーションプラットフォームとして押してくるんだと思うよ。
WPFは同じ規約の高機能版って位置づけになるかと。

232 :デフォルトの名無しさん:2009/09/12(土) 13:30:30
SilverlightのOutOfBrowserはIEコンポの中で動いてますw
セキュリティ制限もそのまま

233 :デフォルトの名無しさん:2009/09/12(土) 13:37:03
HTA から JavaScript 経由でローカルアクセスとかできないの?

234 :デフォルトの名無しさん:2009/09/12(土) 17:28:07
まさかXP上で動かしてるんじゃないんだろうなw

235 :デフォルトの名無しさん:2009/09/13(日) 01:38:40
MVVMってVSのWPFテンプレートとは構造が違うよね?
じゃあWPFテンプレートはどういうパターンに則ってるんだろう

236 :デフォルトの名無しさん:2009/09/13(日) 03:02:10
> MVVMってVSのWPFテンプレートとは構造が違うよね?
え?

237 :デフォルトの名無しさん:2009/09/13(日) 09:40:46
ちょっと上にVisual Studioのアニメーション切っているって話があったけど、
一通り探してみてもどこで設定できるかわかりませんでした。。
よかったら教えてください。

238 :デフォルトの名無しさん:2009/09/13(日) 11:55:10
VSのWPFテンプレートには全くフレームワーク色がないだろ
どうとでも使える

>>237
ツール→オプション→環境ツールをアニメーションで表示

239 :デフォルトの名無しさん:2009/09/13(日) 14:37:59
>>238
でもMVVMに則ってやろうとすると手を加えないといけないよね。
WPFはMVVMと相性が良いっていうけど、それならなんでMVVMパターンのテンプレートにしないんだろう。
ある程度WPFに慣れた人向けってことなんかな。

240 :デフォルトの名無しさん:2009/09/13(日) 14:44:48
ゲームとかちょっとした小さいツールとか作るのにMVVMなんかいらないだろ
MVVM使うようなある程度の規模のプロジェクトだったら
どっちみち自分で枠組み作るんだからテンプレートなんかあってもなくても変わらん

241 :デフォルトの名無しさん:2009/09/13(日) 17:15:08
テンプレートを用意すると、押し付けになっちゃうからね。
MVVMはあくまで技法のひとつだから。

242 :デフォルトの名無しさん:2009/09/13(日) 20:51:40
<StackPanel DockPanel.Dock="Left" Width="100">
 <TextBlock>
  <TextBlock.BitmapEffect>
   <BevelBitmapEffect></BevelBitmapEffect>
  </TextBlock.BitmapEffect>
  ABC
 </TextBlock>
</StackPanel>

BevelBitmapEffect つけても外見がまったく
かわらないんだけど、どこが悪いんでしょうか?

243 :デフォルトの名無しさん:2009/09/13(日) 21:28:09
TextBlockに使うのが悪い

244 :デフォルトの名無しさん:2009/09/13(日) 23:49:28
WPFToolkit の DataGrid についての質問です。
DataTemplate を使用してカラムヘッダに
Grid を入れたんですが、サイズが小さいです。

カラムヘッダいっぱいにGridを表示したいと思います。
たぶん、DataGridColumnHeader の HorizontalContentAlignment

245 :244:2009/09/13(日) 23:53:11
すいません、途中で書きこんでしまいました。

DataGridColumnHeader の HorizontalContentAlignment を Stretch
にすればいけるような気がするんですが、DataGridColumnHeader に
アクセスする方法がわかりません。

どなたか解決策をご存じの方いらっしゃいませんか?


246 :デフォルトの名無しさん:2009/09/14(月) 02:24:11
>>239
その手法が喧伝されはじめたのが最近だから。

もともと(xamlの内部にしかもわかりにくい書式でバインド云々とか)
WPFの元設計がいまいちだとしか思えないわけで、
WPF2では(なんてものを出す気があるのなら)、それに近い構造をデフォルト様式の一つに持ってくるわけだろう。

そして、そのようにシステムレベルで構造拡張するなら、
MVVM(自体も必ずしも簡潔明快なものではないわけで)の露骨なテンプレみたいにせずとも、
前に似た話が出ていたが、VM部分が、簡単なV-M対照表的なものでいいのでないか。
たとえば、バインド定義ファイル?というような名前のものに
[(ザムルの) myText1 = (コードの)myClass1.value1 ]
などと書いておけば、最も初歩的にはそれでOK、簡単なソフトならそれで動く。
そして詳細の設定や制限や、表示やバインドの切り替えやちょっとしたイベント処理等も、複雑なことをやる場合のために、その定義表内で可能な限り出来るようにする。
ザムルは表示のデザインだけ、コードはデータの保持と計算と出力物の作成だけと。

247 :デフォルトの名無しさん:2009/09/14(月) 16:10:14
>>246
なるほど

248 :デフォルトの名無しさん:2009/09/14(月) 18:48:18
WPF使ってワープロみたいな物作るとしたらどの辺のクラスを使うんでしょうか…
フォームズでのMeasureStringのような物ってあります?

249 :デフォルトの名無しさん:2009/09/14(月) 19:37:41
>>248
FlowDocumentかな?

250 :デフォルトの名無しさん:2009/09/14(月) 20:01:51
WPFにはとっても複雑で高レベルなテキストレイアウトの仕組みがある
MSDN読んでると頭痛くなってくるから頑張れ

251 :248:2009/09/14(月) 21:48:53
んーレイアウトとかはFlowDocumentとかその他のレイアウトの仕組みがてんこ盛りありそうなんですが、
Graphics.MeasureCharacterRangesみたいなのとかプリミティブに操作出来るものがないと何処かで行き詰まる気が。

とりあえずMSDNいってみまふ・・・

252 :デフォルトの名無しさん:2009/09/14(月) 22:14:09
>>251
http://msdn.microsoft.com/ja-jp/library/ms754036%28VS.80%29.aspx
このへん

253 :デフォルトの名無しさん:2009/09/15(火) 12:54:00
LineってCanvas上じゃないと表示できないの?
StackPanelに入れたいんだけど表示されない

254 :デフォルトの名無しさん:2009/09/15(火) 12:59:29
普通に表示されるけど
Lineって本当にお絵かきするためのコントロールなので区切り線にはSeparatorを使う

255 :デフォルトの名無しさん:2009/09/15(火) 13:09:12
パスの間違いだろ
<StackPanel Margin="72,112,184,131">
<Path Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Width="217" Height="81" Data="M96,56 L312,136"/>
</StackPanel>


256 :デフォルトの名無しさん:2009/09/15(火) 16:36:36
TabItemのタブをホイールクリックしたというイベントを拾いたい場合
自分でMouseDownやMouseUpイベントを処理するしかないんでしょうか?

257 :256:2009/09/15(火) 16:40:06
>>256
補足
やりたい事は、IE8等のタブブラウザによくあるような「タブをホイールクリックすると閉じる」
という動作です。

258 :デフォルトの名無しさん:2009/09/16(水) 10:30:01
>>256
まあClickイベントが無い以上は、そうなるわな。あと、MouseLeaveイベントも拾っとかないと
いかんのでは。
ただ、IEブラウザの例ではクリックでタブを閉じてるのはなくて
MouseDownされた時点で閉じているようだが?

259 :256:2009/09/16(水) 13:54:03
>>258
ttp://codepad.org/asHHg3sH
こんな風に添付プロパティにして、コマンドを関連付けられるようにしました。
クリック判定は面倒くさいんで、MouseDownで実行するようにしました。IEもそうなってるしね。
ありがとうございました。

260 :デフォルトの名無しさん:2009/09/16(水) 14:01:45
おお。質問を受けて、私もカスタムビヘイビアを作ろうかと検討していた所だった。
使わせてもらいます。

261 :デフォルトの名無しさん:2009/09/17(木) 00:00:15
WPFではNameはキャメルじゃないの?

262 :デフォルトの名無しさん:2009/09/17(木) 01:18:55
ttp://hakuhin.hp.infoseek.co.jp/main/as/mtx_2d.html#MATRIX_04
この「好きな座標を中心に回転」みたいなのをやりたいんだけど、
これの言う原点ってその要素を配置してるPanelの座標のことだよね?
具体的にはCanvasにStarsという画像を配置してるとして、平行移動はStarsに、
回転はCanvasに適用するということになるのかな?
でもそれだとStarsが複数あったとき、Canvasも同じだけ用意しないといけないよね…

263 :デフォルトの名無しさん:2009/09/17(木) 01:34:13
>>261
Nameのお作法はよく分からん。俺は小文字スタートキャメルだけど、
標準コントロールをみてみたらキャメルにしていなかった気がする。

264 :デフォルトの名無しさん:2009/09/17(木) 01:43:25
>>262
Flash&ActiveScript? スレ違い?
WPFならRenderTransform使うけど

265 :デフォルトの名無しさん:2009/09/17(木) 01:54:51
ActiveScript?

266 :デフォルトの名無しさん:2009/09/17(木) 02:00:18
>>264
うん、RenderTransform使うんだけど、TranslateTransformとRotateTransform
をそれぞれどの要素に適用したらいいかなと悩んでるの。

267 :デフォルトの名無しさん:2009/09/17(木) 02:03:39
一つの要素に両方適用すりゃいいじゃん

268 :デフォルトの名無しさん:2009/09/17(木) 02:08:29
>>267
それだとうまくいかないんだよな。
Translateしても原点は相変わらず左上。
画像に対して適用してもその画像の持つ論理座標上での位置は変わらんみたいなんで。

269 :デフォルトの名無しさん:2009/09/17(木) 07:41:57
>>268
俺もそういった座標系でこけたことある。
結局中心点とかコントロールだけで取ること出来なかったしグリッドに貼って
中心点をプロパティ化してバインドした

270 :デフォルトの名無しさん:2009/09/17(木) 10:10:38
好きな座標を中心に回転…
RotateTransformのCenterX/CenterY、じゃないんだろうなぁ、そんなに悩んでるんだから

271 :デフォルトの名無しさん:2009/09/17(木) 11:25:26
最悪MatrixTransformでどうとでもなるけど

272 :デフォルトの名無しさん:2009/09/17(木) 13:17:18
>>270
ScaleTransformとかと組み合わせたくなったとき
Centerプロパティは役に立たないんだ。
>>271
この際アフィン変換について学んでみるかなあ…
>>269
よかったら詳しく教えて

273 :デフォルトの名無しさん:2009/09/17(木) 13:20:04
RotateTransformやった後にScaleTransformをやるんじゃだめなんか?

274 :デフォルトの名無しさん:2009/09/17(木) 13:26:16
別に勉強するほどのことでもないよ
Matrix m = Matrix.Identity;
m.RotateAt(r, cx, cy);
m.Scale(sx, sy);
みたいなかんじ

275 :デフォルトの名無しさん:2009/09/19(土) 03:23:12
XAMLのBindingは同じxaml内のElementとしか直接的にBindingできないの?
foo.xamlのElement1とbar.xamlのElement2はBindingできない?

276 :デフォルトの名無しさん:2009/09/19(土) 06:54:55
Image Sourceに外部イメージファイルを指定できないのは何故?
MediaElement Sourceでは出来るのに
出来るか出来ないか統一してくれないと分かりにくい

277 :デフォルトの名無しさん:2009/09/19(土) 09:35:26
>>276
できるけど

278 :デフォルトの名無しさん:2009/09/19(土) 21:35:50
>>276
余裕でできるが

279 :デフォルトの名無しさん:2009/09/19(土) 23:05:49
なんでWPFアプリケーションって見た目Classicになるん?
VisualStyleすら適用できないとかどんだけwww

280 :デフォルトの名無しさん:2009/09/19(土) 23:12:18
>>279
俺Vistaと7でしか動かしていないけど、勝手にそれっぽい外観になるよ。
どうしてもうまくいかないなら、ここみたいに手動でしてみたらどう?
ttp://d.hatena.ne.jp/Yamaki/20061106/1162787221

281 :デフォルトの名無しさん:2009/09/19(土) 23:15:13
自分のWPFアプリはXP動作保証外って書いちゃったなあ

282 :デフォルトの名無しさん:2009/09/19(土) 23:17:51
>>280
違うデスクトップテーマを強制適用させると起動直後に死ぬらしい。
もう死ねばいい。

283 :デフォルトの名無しさん:2009/09/19(土) 23:44:12
VS2008SP1当ててないからか?

284 :デフォルトの名無しさん:2009/09/20(日) 09:19:52
テーマで思い出したけど、System.Windows 名前空間の MessaeBox が
クラシックになったり、Microsoft.Win32 名前空間の OpenFileDialog が
Vista 上で XP 風になるのが嫌だな。

仕方ないから System.Windows.Forms 名前空間のものを使用してるけど、
こういう標準ダイアログ系は Microsoft に頑張って欲しいな。

285 :デフォルトの名無しさん:2009/09/20(日) 21:56:11
WPF Themes 使うとか。
まあ、もちろんコモンダイアログ系は適応できないけどね。

286 :デフォルトの名無しさん:2009/09/20(日) 21:58:03
本来WPFの守備範囲外だからなあ
文句があるならWPFベースで自作しろってことなんだろう

287 :デフォルトの名無しさん:2009/09/20(日) 22:39:23
>>285
WPF Themesいいよね。
でも、添付されているテーマが20くらいあるけど、テーマによって適用できるのと適用できないものがあるからなぁ。
Rectangleが消えちゃったり、グルーピング表示させたときのグループヘッダーが消えちゃったりと。
まあそこんところは自分でXAMLを修正すればいいんだけど。

288 :デフォルトの名無しさん:2009/09/21(月) 10:23:26
パネル系とかから出し入れするとHeightが復活してくるのが面倒だ

289 :デフォルトの名無しさん:2009/09/21(月) 19:30:04
TextBlock 内の文字をリサイズに合わせて、
TextBlock いっぱいに表示したいのですが
どうすればよろしいでしょうか?


290 :デフォルトの名無しさん:2009/09/21(月) 19:31:31
Viewbox

291 :デフォルトの名無しさん:2009/09/21(月) 19:56:44
レイアウトの状態をまるまる保存して後で復元するため
WindowのContentをXamlWriterで書き出しました。
しかし、"{Binding Hoge}"のような所がBinding後の実際の値になって書き出されてました。
Binding構文を失わずに書き出す方法はありませんか?

292 :デフォルトの名無しさん:2009/09/22(火) 23:17:33
.Net Freamwork 4.0じゃRibbonは使えないの?

293 :デフォルトの名無しさん:2009/09/22(火) 23:33:11
>>292
俺試していないから.NETのバージョンは分からないけど、
WPFでもリボンが使えるようになっているみたい。
http://www.microsoft.com/japan/powerpro/TF/column/mo_08_3.mspx

こうやって別途ダウンロードさせるということは、.NET Framework本体に入れる気はないのかなと思う。

294 :デフォルトの名無しさん:2009/09/23(水) 00:08:33
>>293
落としてみたら3.5だった。
4.0用はないみたいだ

295 :デフォルトの名無しさん:2009/09/23(水) 04:26:44
Ribbonは使用条件が違うからね

296 :デフォルトの名無しさん:2009/09/25(金) 14:24:56
WPFの作法が良く分からない。

たとえばガントチャートコントロールみたいなのを作ろうとした時は
Controlのサブクラスを作成してそのOnRenderでDrawingContextから描画すれば良いの?

297 :デフォルトの名無しさん:2009/09/25(金) 14:48:31
アマゾンで入門本をいくつかかいなよ。

298 :デフォルトの名無しさん:2009/09/25(金) 16:43:48
いくつか本は立ち読みしたんだけど、完全オーナードローのカスタムコントロールについて記述されている本が見つからないんだよ。
逆にあったら教えて欲しい。



299 :デフォルトの名無しさん:2009/09/25(金) 17:13:59
立ち読みしないで買ってね。

300 :デフォルトの名無しさん:2009/09/26(土) 09:50:49
C#を排除したXAML専門のサイト無いんですか?
公式にもWPFフォーラムしかありません

301 :デフォルトの名無しさん:2009/09/26(土) 18:04:28
Canvas内にLineかRectで書けば?

302 :デフォルトの名無しさん:2009/09/26(土) 23:21:56
>>298
.NETのソースコード読めばいいじゃん
WPFは全部公開されてるよ

303 :デフォルトの名無しさん:2009/09/27(日) 11:31:10
>>320
マジデ?wどこで公開されてんの??

304 :デフォルトの名無しさん:2009/09/27(日) 11:40:14
VS2008(×Express)でステップインできる
もしくはttp://www.codeplex.com/NetMassDownloader/Wiki/View.aspxで落とす

305 :デフォルトの名無しさん:2009/09/27(日) 12:55:18
>>304のツール使えばExpressでもソースGetできるみたいだな

306 :デフォルトの名無しさん:2009/09/27(日) 13:12:25
ん?powershellで動くの?

307 :デフォルトの名無しさん:2009/09/27(日) 14:02:03
>>304&>>305
うおー、ちと興奮した。
ありがとう、早速ステップインしてくる!

308 :デフォルトの名無しさん:2009/09/27(日) 14:08:09
ステップインするための設定おしえて><

309 :デフォルトの名無しさん:2009/09/27(日) 15:03:58
ググれカス

310 :デフォルトの名無しさん:2009/09/27(日) 15:10:29
なんだよ.NETソース公開されていたんか。
いままでMonoのソースとか見て参考にしていたよ。

クラスファイルごとに1個ずつダウンロードされるから時間かかるなw
細かい話だがプライベート変数のプレフィックスとか統一されていないんだね。

311 :デフォルトの名無しさん:2009/09/27(日) 16:23:04
オフィシャルなNumericUpDownが欲しい
WPF Toolkitに入れるように誰か要望してくれないかなあ

312 :デフォルトの名無しさん:2009/09/27(日) 16:55:36
ttp://referencesource.microsoft.com/netframework.aspx
こんなのもある

313 :デフォルトの名無しさん:2009/09/27(日) 19:02:55
RadioButtonのVerticalContentAlignmentをBottomに設定しても、
Contentにあたる部分しかBottomにならず、◎の部分がTop固定のままで使いにくい

◎ Content




  Content

314 :デフォルトの名無しさん:2009/09/27(日) 19:50:01
RadioButton自体をBottomに配置するという考えは思い付かんか

315 :デフォルトの名無しさん:2009/09/27(日) 20:00:48
出来る出来ないの話ではありません

316 :デフォルトの名無しさん:2009/09/27(日) 20:35:25
Vertical"Content"AlignmentなんだからContent部分だけ配置が変わるのは当たり前だろう

317 :デフォルトの名無しさん:2009/09/27(日) 21:02:18
「使いにくい」という意見に大しての答えが↑
これがPG脳ですか。

318 :デフォルトの名無しさん:2009/09/27(日) 21:08:14
「使いにくい」という感想だけなら「ふーん」で終わる話なんだが
どうして欲しいか書いてないんだから、上のようなレス貰って文句言うのは筋違い。

319 :デフォルトの名無しさん:2009/09/27(日) 21:15:21
「Content」を理解していていればそれは自然な挙動だが、
それを理解していないからこの挙動を理解できないだけ。

320 :デフォルトの名無しさん:2009/09/27(日) 21:20:42
試しにボタンの位置が常にCenterになるようControlTemplate書いてみたら10行くらいで書けた。
WPFの柔軟性とXAMLは恐ろしい子だな。

321 :デフォルトの名無しさん:2009/09/27(日) 21:33:52
Contentを理解していることを前提に、Contentに◎が含まれない、つまり◎をContentとして扱っていないというのが不便ではないかと言っているのですが

322 :訂正:2009/09/27(日) 21:37:30
×扱っていない
◎扱えない

323 :デフォルトの名無しさん:2009/09/27(日) 21:47:49
俺は不便に感じない。
◎をContentとして扱いたければ、Contentが空のRadioButtonとTextBlockなりを
Gridとかで並べればいいだけだし。

324 :デフォルトの名無しさん:2009/09/27(日) 21:48:49
あ、StackPanelの方がいいかな。

325 :デフォルトの名無しさん:2009/09/27(日) 21:57:45
◎をContentとして扱いたくない状況が分からない
ずれてる方がクールとかあるんですか?

326 :デフォルトの名無しさん:2009/09/27(日) 21:59:20
もうどうでもよくなったかも知れんけど、ラジオボタンはスタイルをほぐせば二重丸の部分が別で考えられているのがわかるぞ

<ControlTemplate TargetType="{x:Type RadioButton}">
<BulletDecorator Background="Transparent">
<BulletDecorator.Bullet>
<Microsoft_Windows_Themes:BulletChrome Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}" IsChecked="{TemplateBinding IsChecked}"
IsRound="true" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/>
</BulletDecorator.Bullet>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
</BulletDecorator>
<ControlTemplate.Triggers>
***
</ControlTemplate.Triggers>
</ControlTemplate>
今となってはどうでもいいことかもねごめんね

327 :デフォルトの名無しさん:2009/09/28(月) 00:03:35
>>326
↑こういうのがPG脳と言って、開発現場では嫌われていますww

328 :デフォルトの名無しさん:2009/09/28(月) 01:04:26
>>327
Control templateの中身を確かめるくらいで嫌ってしまうような現場は、
そもそもWPFに手を出せないから心配しなくてもいい。

329 :デフォルトの名無しさん:2009/09/28(月) 01:41:02
>>328
激しく同意

330 :デフォルトの名無しさん:2009/09/28(月) 07:53:39
>>320
見た目の問題なら大概は XAML だけで片が付くね。
コードビハインド書いたら負け、みたいな感じ。


331 :デフォルトの名無しさん:2009/09/28(月) 10:38:04
確認だけどこの流れは>>326がマズイってことになってる?

332 :デフォルトの名無しさん:2009/09/28(月) 11:21:59
>>327>>331の頭の中がマズイことなってるって流れ。

333 :デフォルトの名無しさん:2009/09/28(月) 14:58:00
>>304のツールでちゃんとソース落とせる?
netmassdownloader -d C:\Windows\Microsoft.NET\Framework64\v3.5 -output E:\ReferenceSource
てな感じでやっても見つからんみたいで落とせん。

334 :デフォルトの名無しさん:2009/09/28(月) 16:03:27
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client
を指定したら全部じゃないけどダウンロードできたわ
ただ単にMSのサーバーに残ってなかっただけか。失礼

335 :デフォルトの名無しさん:2009/09/29(火) 21:27:39
    〃〃∩  _, ,_
     ⊂⌒( `Д´) < ヤダヤダ!RadioButtonが俺の思った通りの仕様じゃないのは嫌だ!
       `ヽ_つ ⊂ノ

      _, ,_
     (`Д´ ∩ < ヤダヤダ!反論なんて嫌だ!反論する奴は全員PG脳だ!
     ⊂   (    俺の思った通りじゃないのは嫌だ!
       ヽ∩ つ  ジタバタ
         〃〃

       ∩ ∧ ∧
     ⊂⌒(  _, ,_)
       `ヽ_つ ⊂ノ  グスッ・・・

             (ヨ
    〃〃∩  _, ,_ ノノ キィィィ ヤダヤダヤダヤダヤダヤダ!! PG脳は
     ⊂⌒(#`Д´)illi   < ヤダヤダヤダヤダヤダヤダ!! 現場で嫌われる!!
       `ヽ_つ⌒ヽ(ヨ) (     ヤダヤダヤダヤダヤダヤダ!! 嫌われる!!嫌われる!!
            ⌒Y⌒ ドンドン

336 :デフォルトの名無しさん:2009/09/29(火) 21:58:47
コントロールの位置合わせにPanelとか色々あるけど結局Gridだらけになった

337 :デフォルトの名無しさん:2009/09/29(火) 22:00:16
Gridは万能だということらしいからな。

338 :デフォルトの名無しさん:2009/09/29(火) 22:04:40
StackPanelは使うだろ

339 :デフォルトの名無しさん:2009/09/29(火) 22:17:20
GridのRowとかColumnが超便利だということに最近気づいた

340 :デフォルトの名無しさん:2009/09/29(火) 22:18:16
おせーよw

341 :デフォルトの名無しさん:2009/09/29(火) 23:44:36
>>338
Gridに置き換わった

342 :デフォルトの名無しさん:2009/09/30(水) 09:53:05
>>341
???

343 :デフォルトの名無しさん:2009/09/30(水) 12:52:30
StackPanel、使い方次第で凄い面白いよ

344 :デフォルトの名無しさん:2009/09/30(水) 12:55:19
>>343
マウスが来るとでかくなるMac見たいなUI見たときちょっと「おっ」っておもった

345 :デフォルトの名無しさん:2009/09/30(水) 12:58:36
>>344
うんうん、まさにそういう使い方をしておるよ
無名なTwitterクライアントだがね

346 :デフォルトの名無しさん:2009/10/02(金) 14:11:00
WPFで作ったTwitterクライアントあんのか
ちょっと欲しいぜ

自分で作るのはめんどい

347 :デフォルトの名無しさん:2009/10/02(金) 17:15:16
>>346
結構沢山あるよ。
国産のは実験で作ってる系の軽めなのが多い。
海外製のはいかにもWPFって感じにかなり多機能(悪く言えばゴテゴテ)なのが幾つか。

348 :デフォルトの名無しさん:2009/10/02(金) 18:02:53
<TextBlock>あい</TextBlock>

「あ」だけ色を変えたいのですが、

<TextBlock 赤>あ</TextBlock><TextBlock 青>い</TextBlock>

みたいに独立させなきゃいけないのでしょうか

349 :デフォルトの名無しさん:2009/10/02(金) 18:05:23
TextBlockなら中にSpanとか使える

350 :デフォルトの名無しさん:2009/10/02(金) 19:44:53
Spanって便利そうですね
ありがとうございます

351 :デフォルトの名無しさん:2009/10/03(土) 18:59:55
DPIで表示の大きさ変わるのってどうなんだろ
良いことなのかよくわからない

352 :デフォルトの名無しさん:2009/10/03(土) 23:33:20
携帯とか dpi が明らかに違うだろ
そういう場合でも絶対サイズ(2cmとか)で表示できるのは
いいことじゃないの?

353 :デフォルトの名無しさん:2009/10/03(土) 23:57:15
wpfはdpiを96と規定してるんだっけ。
じゃあそれだとモニタによって絶対サイズ変わっちゃうよね。
俺のモニタは約86dpiだから見た目はちょっと大きくなっちゃうはず。

354 :デフォルトの名無しさん:2009/10/04(日) 00:26:25
モニタによってサイズを変えたくないからこその96固定だろう?


355 :デフォルトの名無しさん:2009/10/04(日) 00:37:16
>>353
その86dpiのモニタを使っていても、どうせWindowsのDPIの設定は96なんだろ。
だから、お前のPCでWPFアプリだけ少し大きく描画されるなんてことにはならない。

356 :デフォルトの名無しさん:2009/10/04(日) 01:23:18
画像ぼやける

357 :353:2009/10/04(日) 13:31:41
うーん、わからん。
例えば12ptのフォントを表示させたとして、WinのDPIは96だから
(12 / 72) * 96 = 16pxの大きさで表示される。
んで、俺のモニタは86dpiだから 16 / 86 ≒ 0.186in
モニタによってドットピッチはさまざまだから、絶対的な大きさは変わってしまう。

それとも、そういうことじゃなくて12ptは必ず16pxの長さになる(Windows上では)ってことが狙いなの?
サイズを変えたくないってのはピクセル単位の話なのか

358 :デフォルトの名無しさん:2009/10/04(日) 14:04:16
物理的な大きさ云々と言うより、
GDI使うアプリでは、WindowsのDPIの設定を標準の96から変更すると描画が崩れるものが多かったから、
WPFアプリでは何も考えず96 DPIのつもりで取り扱えるようにしようという程度のことだと考えておけばいいと思う。

359 :デフォルトの名無しさん:2009/10/04(日) 14:29:06
>>357
正反対。絶対サイズでいえば 12pt / 72 = 0.166in で計算は終わり。これがWPFでのサイズ。
px換算だと、(12/72) * 86 = 14.33px(ハードウェアピクセル)
デバイス非依存ピクセル(DIP)では、 (12/72) * 96 = 16DIP。これは絶対的なサイズ。

公式に書いてあるんだから読んで。

http://msdn.microsoft.com/ja-jp/library/ms744952(VS.80).aspx

Windows Presentation Foundation と Windows フォームのレイアウトの違い
WPF は、解像度に依存しないレイアウトを使用します。
すべての WPF レイアウトのサイズは、デバイス非依存ピクセルを使用して指定されます。
デバイス非依存ピクセルのサイズは 1/96 インチで、解像度に依存しないため、
出力先が 72 dpi モニタであっても 19,200 dpi プリンタであっても、同様の結果を得ることができます。

出力デバイスが 96 dpi で、WindowsFormsHost 要素にスケーリングが適用されていない場合、
1 デバイス非依存ピクセルは 1 ハードウェア ピクセルと等しくなります。


360 :デフォルトの名無しさん:2009/10/04(日) 20:10:02
拡大して同じだけ場所とるならユーザーからしたら何のために解像度大きくしたか分からんよな

361 :353:2009/10/04(日) 21:58:21
>>359
>出力先が 72 dpi モニタであっても 19,200 dpi プリンタであっても、同様の結果を得ることができます。

これはつまり定規で測れば同じ大きさを示すってこと?
Windowsはこちらが教えなくても出力先のモニタやプリンタのDPI値を知ってるのか。

362 :デフォルトの名無しさん:2009/10/04(日) 22:05:31
モニタやプリンタが教えてくれるだろ。

363 :デフォルトの名無しさん:2009/10/04(日) 22:39:27
今度、Blend 2でWpfControlLibraryからコントロールを作ろうと思うんだけど
Expanderのように内部にグリッドを持つことができるようなコントロールを作るためにはどんな技術が必要になるのか教えてほしい

結構頑張っているものの一向にうまくいく気配がないorz

何かそのような名称でもいいんで情報がほしい

364 :デフォルトの名無しさん:2009/10/04(日) 22:46:00
ContentControlから派生する。
ControlTemplateには必ずContentPresenter要素を含める。
すると,XAMLでダイレクトコンテンツとして指定した要素が自動的にその場所に表示される。

365 :デフォルトの名無しさん:2009/10/04(日) 23:03:55
>>364
ありがとう!
まだうまく再現出来ていないけどなんとかしてみる!b

366 :デフォルトの名無しさん:2009/10/04(日) 23:14:39
>>363
Blend だけでやろうとしてない?
Visual Studio を使わないと新しいロジックやプロパティを持ったコントロールを作成するのは無理だと思う。

単に外見やアニメーションを変更したいだけなら、コントロールを作成するんじゃなくて、
スタイルを使って、コントロールのテンプレートを置き換えるだけで済むんだけど。

367 :デフォルトの名無しさん:2009/10/04(日) 23:49:53
一応VS2008Pro,C#+Blend 2で頑張ってます。
簡単なプロパティ作ってDependencyPropertyうんぬんはできているので、あとはそのContentPresenterぐらいかなと考えてます

いまだ苦戦してるけど近づいた感じもする

368 :デフォルトの名無しさん:2009/10/04(日) 23:54:09
カスタムコントロール作るのって結構難しいよ
何も考えずに作るとテンプレートに対する制約が増えすぎて
テンプレートを差し替えられないない使い物にならないコントロールができる

369 :デフォルトの名無しさん:2009/10/05(月) 00:14:51
元のコンポーネントを拡張するだけなら簡単じゃない?

370 :デフォルトの名無しさん:2009/10/05(月) 00:14:53
staticpanelを使うのがまずいのか、簡単に上から「ボタン、テキスト、ContentPresenter」ときているのに
コントロールにコンテンツを突っ込むとボタン、テキストが消えて追加したコントロールのみになるw

Contentpresenterを使うコントロールの作成は前にもどこかで見て訓練したんだけど、まったく覚えていない・・・。
なにか星の形のボタン作って、Contentプロパティはこいつをつかうんだぜ!みたいなことで説明していたとおもうんだけど、
そんなことだけ覚えていて、感じの記述を覚えてない。

理想では自由自在にカスタムコントロールさえ作れれば、ExpanderをもっとWPFらしいコントロールが作れれるなぁといった安易な発想なんだけど、
保守に疲れてしまうならいっそのことテンプレートで作ったほうがいいのかな・・・

でもやっぱ自作コントロールでDLL配布できればかっこいいねっ!




作れればかっこいいね・・・。

371 :デフォルトの名無しさん:2009/10/05(月) 10:15:36
なんとか理想の動きをするようになったので報告

ContentControlから派生するということだったのでそのままContentControlを<ContentControl>***</ContentControl>としていたのですが、
この部分をStackPanelに変えることでカスタムコントロールにコンテナとしての機能を取り付けることに成功。

<StackPanel>
****略****
<Grid x:Name="LayoutRoot">
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" >
<TextBlock Text="{Binding Path=textcontent, ElementName=UserControl, Mode=Default}" TextWrapping="Wrap"/>
<Button Content="Button"/>
</StackPanel>
</Grid>
</StackPanel>

<Window x:Class="WpfApplication1.Window1" Title="Window1" Height="300" Width="300">
<Grid>
<temp:UserControl1 textcontent="unko">
<Button Content="うんこ" />
</temp:UserControl1>
</Grid>
</Window>

372 :デフォルトの名無しさん:2009/10/05(月) 19:06:09
ObservableCollection<T>とBindingList<T>の使い分けって、
シンプルかつ自分で拡張の前者、多機能な後者という認識でいいんでしょうか?

並び替え等を行わないので前者でいこうかと思うのですが、注意点があればお願いします。


373 :デフォルトの名無しさん:2009/10/06(火) 15:30:21
<TextBlock Text="{Binding Duration,StringFormat=hh:mm:ss}"></TextBlock>

TimeSpan をバインディングしたんだけど、StringFormat が有効にならない。
使い方間違ってる、俺?


374 :デフォルトの名無しさん:2009/10/06(火) 16:14:07
TimeSpanはIFormattableじゃないからなぁ

375 :デフォルトの名無しさん:2009/10/06(火) 16:33:46
Bindingの書き方はいまだに理解してない。
StringFormat=T
でやってみて?

376 :375:2009/10/06(火) 16:34:52
ごめん無視して。

377 :デフォルトの名無しさん:2009/10/06(火) 16:54:47
まあ、Converter使えってことだな

378 :373:2009/10/06(火) 17:05:05
はやいレスありがとう。
ヘルプ見てみたら DateTime は IFormattable だけど、
TimeSpan は違うんだね。勉強になりました。

379 :デフォルトの名無しさん:2009/10/06(火) 17:36:29
<Hyperlink Name="hyperlink1">Hello</Hyperlink>
このHelloをコードビハインドで取得するにはどうすればいいですか?

<Hyperlink Name="hyperlink1"><TextBlock Name="textBlock1">Hello</TextBlock></Hyperlink>
これでtextBlock1.Textから取得できましたがTextBlockを省きたいです

380 :デフォルトの名無しさん:2009/10/06(火) 17:38:40
実際はこのようになっています
<TextBlock><Hyperlink Name="hyperlink1"><TextBlock Name="textBlock1">Hello</TextBlock></Hyperlink> WPF!</TextBlock>

381 :デフォルトの名無しさん:2009/10/06(火) 17:46:36
HyperlinkのInlinesの中にRunが入ってるからそのTextを見る

382 :デフォルトの名無しさん:2009/10/06(火) 18:14:54
難しいので諦めます
ありがとうございました

383 :デフォルトの名無しさん:2009/10/06(火) 22:15:38
120dpiでFrameの中のPageのギリギリ端にBorderなどで枠を表示させると両サイドだけ切れる
96dpiだと切れない
何故このような差があるの?

384 :デフォルトの名無しさん:2009/10/07(水) 00:44:24
たまたまじゃないかな?
作画するときスムーズに見せる機能(フォントとかに使われている奴)が効いてるため見た目でちょっとした誤差がでる

385 :デフォルトの名無しさん:2009/10/08(木) 23:32:56
今ちょっとD&Dの勉強してるんだけども
Thumbの外見をビハインドで変えるにはどうしたらいいですか?
Adornerはめんどくさいんであまり使いたくないのです

やりたいことは右ペインにサムネ一覧出して、そこからD&Dで中央ペインの特定の場所に貼り付けたい
その場所の当たり付けるのに半透明にしたサムネをドラッグしたいのです
サムネ自体はVisualBrush付けたRectangleで、生の画像ではありません

よろしくお願いします

386 :デフォルトの名無しさん:2009/10/09(金) 15:54:42
XAMLで定義したResourceDictionaryをC#側から触るにはどうしたらいいんだ?

387 :デフォルトの名無しさん:2009/10/09(金) 16:29:04
Application.Current.Resourcesじゃだめだっけ?

388 :デフォルトの名無しさん:2009/10/09(金) 18:05:21
>>387
やってみたけど中身0だった
別にエラーは出てないんだよなあ

389 :デフォルトの名無しさん:2009/10/09(金) 20:21:11
>>387
そんなはずは・・
AppクラスのXAMLに定義したresourceなら
Appクラスのoverride protected OnStartupで
object o = this.Resources["key"];とする。
WindowクラスのXAMLに定義したresourceなら
コンストラクタのInitializeComponent();のあとに
object o = this.Resources["key"];
これで確認できるはずだよ。

390 :デフォルトの名無しさん:2009/10/09(金) 20:56:26
VistaからはPresentationFont.exeみたいな名前のプロセスがデフォで起動時に立ち上がるのでしょうか?
XPだと初めのWPFアプリが起動されないと開始されません

391 :デフォルトの名無しさん:2009/10/10(土) 00:43:49
>>389
・・・あーいや
追加→リソースディクショナリで別ファイルになってる奴なんだ
だからか?>中身空

392 :デフォルトの名無しさん:2009/10/10(土) 01:19:17
>>391
あーそうか。MergedDictionariesでResourceを追加してるわけね。
なら、
該当するDictionaryがMergedDictionariesの0番目に追加されてるとして
object o = this.Resources.MergedDictionaries[0]["key"];
これで取得できるはず。
DictionaryをMergeしても直接コレクションアイテムが、Merge先のDictionary(この場合this.Resources)に
一個一個追加されるわけじゃない。


393 :デフォルトの名無しさん:2009/10/10(土) 06:42:39
>>390
.NET Framework 3.0以上の入った環境では、
Windows Presentation Foundation Font Cacheというサービスがある。
そのプロセスの正体はこれだろう。

お前のVistaパソコンで起動時にこれが立ち上がるのは、
このサービスがスタートアップ: 自動になっているか、
PC起動時に実行されるアプリの中にWPFアプリが存在するかのどっちかだと思う。

394 :デフォルトの名無しさん:2009/10/10(土) 19:01:52
>>392
うーん
それでもResources.MergedDictionariesのCountが0なんだ
これはもしかしたら、そもそもリソースの書き方に問題あるかも知れない
ちょっと適当なコントロールにくっつけて有効かどうか試してみる

395 :デフォルトの名無しさん:2009/10/10(土) 22:59:00
最近LAN接続のとある計測器の計測結果/経過をリアルタイムに表示するソフトをWPFを用いて作っています。
ソフトウェアの役割は
1.機器に対して1ms程度間隔でとあるデータを送信する。
2.1ms程度間隔で機器からデータを取得する。
3.2のデータをユーザーに向けて表示する。

参考までに申し上げますと、
開発対象はあくまで計測機器であり、ソフトウェアは単なる治具でありWPFを使っているのはあくまで趣味的な問題で
WPF的にスマートなやり方で実装したいな、と思っております。

1,2の機能はUIスレッドとは別スレッドとして1msスリープで定期的に動いています。
1のスレッドをthreadT
2のスレッドをthreadR
とします。
そしてUIスレッドを含めたすべてのスレッドがあるオブジェクト(ObjA)のプロパティの読み書きを行います。
ObjAは表示用の各UIElemntのDataContextとして設定してあり、ObjAのプロパティはすべてDependencyPropertyとなっております。
ObjAの所有スレッドはUIスレッドであるため、threadT,threadRはプロパティを読み書きする場合には、Invoke,BeginInvokeを用いてアクセスします。


396 :395:2009/10/10(土) 23:00:19
作ってみて気づいたのですが、結構遅いのです。
まず、threadTがObjAから取得する際にInvokeにてGetValueしておりそこでUIスレッドの都合によって待たされる。
threadRからのObjAプロパティに対する書き込みは、BeginInvokeにで非同期で書きこむため、そうでもないのかな、と思ってはいます。
厳密に計測しては無いですが。

で、今回の問題点は上に書いたとおり
・threadTから送信されるデータが遅い、それは、ObjAからいちいちInvoke(GetValue())で取得しているから、だと思われる。
というところです。

これを解決するには、
・わざわざDependencyPropertyなど使わずに通常Propertyを用いて、バインディングさせておいて、
表示を更新したい場合にINotifyPropertyChangedを通じて通知する。
・表示用途のバインディング対象とは別に高速で原始的なオブジェクトをthreadRが参照するようにして
表示させたいタイミング(たとえば60fps程度)でUIにバインディングされているオブジェクトを更新する。

などというやり方も考えられるかと思うのですが、WPF的なフレームワーク(主にDependencyPropertyとバインディング)を用いて実装したいなと思っており、
他に粋で効率の良い方法はないかなと思い書き込ませていただきました。

皆さんは大量である程度リアルタイム性の必要なデータをUIにバインディングする際などはどのようなやり方で実現されているのでしょうか?
よろしくお願いします。


397 :デフォルトの名無しさん:2009/10/10(土) 23:31:36
マルチスレッドの設計がひどすぎる上に
その周期でC#/WPFを選択している時点で論外だと思うが

まぁ、好きでやっているなら好きにやれ

398 :デフォルトの名無しさん:2009/10/10(土) 23:39:03
バインディングなんていうのは「枠にはまれば便利」なものであってだな
そんな特殊な用途をいちいち想定して作ってるわけがないだろ

399 :デフォルトの名無しさん:2009/10/11(日) 00:37:49
WPF以前の問題として
1msのsleepってWindowsでは実現できないじゃなかったかな?
Sleep(1)としても、実際はどうしても15msほどSleepしてしまうと私は記憶しているが。

>1,2の機能はUIスレッドとは別スレッドとして1msスリープで定期的に動いています。
これは本当に実現できているのかまず確認してみては?


400 :デフォルトの名無しさん:2009/10/11(日) 01:07:32
1msじゃまわらないね。
俺も15msくらいという記述を昔に見たことがあるが、今探してもないな。
Forms.Timerが55ミリ秒とはかいてあるが。


401 :デフォルトの名無しさん:2009/10/11(日) 01:35:49
timeBeginPeriod(1)からtimeEndPeriod(1)するまでの間は、Sleepも精度が上がるから、
一応1ミリ秒のスリープも実現不可能ではないはず。
もっとも、それやったところで、396の問題解決には程遠いだろうけど。

402 :デフォルトの名無しさん:2009/10/11(日) 02:12:27
StopWatchが結構な精度持ってなかったっけ?
でもそもそもWindowsのコンテクストスイッチ間隔が20msとかそんなんだから、
デバイスからの割り込みなくてポーリングで1msの分解能を得ることは無理だな
タイマ割り込み使うなら.NETでコーディングは出来んし

403 :デフォルトの名無しさん:2009/10/11(日) 06:46:56
コマンドレスポンスだけの計測を送受信別スレッドにしている時点でもうだめ

404 :デフォルトの名無しさん:2009/10/11(日) 09:33:31
流石にコマンドレスポンスのテストじゃないと思うが

405 :デフォルトの名無しさん:2009/10/11(日) 09:43:24
レスポンスタイムではなくプロトコルの話だと思う

406 :デフォルトの名無しさん:2009/10/11(日) 09:49:08
自作アプリを GPL v2 で公開しようと思ってます。
そのソフトのなかで、マイクロソフトの M-V-VM
サンプルについている DelegateCommand と
ViewModelBase を使用しています。

GPL とリンクするモジュールは GPL でないと
まずいと思っています。

そこで、GPL または 修正BSD ライセンスな、
DelegateCommand と ViewModelBase は
どこかにないでしょうか?



407 :デフォルトの名無しさん:2009/10/11(日) 10:49:37
Ms-PLにしろ
感染性はあるけど遥かに利用しやすい

408 :デフォルトの名無しさん:2009/10/11(日) 11:25:05
MS製mscorlib他を使う限りはGPLは適用できないような気がするんだが……

409 :デフォルトの名無しさん:2009/10/11(日) 11:34:16
OSの一部みたいなもんだから例外条項適用ってことでいいんじゃない?
再配布パッケージを付けたりしたら違反になると思う

410 :デフォルトの名無しさん:2009/10/11(日) 16:16:42
TextBlockの自動リサイズってVisualBrush以外の選択肢はないのだろうか
遅いと書いてはあったけどここまで遅いとは

411 :デフォルトの名無しさん:2009/10/11(日) 17:03:55
.NETでGPLなんか使い物にならないだろ
>>406と同じ悩みを利用者みんなが抱えることになるんだから

>>410
サイズを明示的に指定せずにStackPanelなどに入れとけば勝手にリサイズしてくれると思うけど
どこからVisualBrushが出てくるのかわからない

412 :406:2009/10/11(日) 20:08:26
Ms-PL ってソース非公開で商用利用可能でしょ?
自分のコードがソース非公開で商用利用されるのはいやなので
(自意識過剰とは言わないで)、GPL にしたかったんだけど・・・。

Ms-PL には感染性があるんで、この「このプロジェクトは絶対に
オープンソースで」というと、オブジェクト形式での配布を認める
Ms-PL に抵触してると解釈される?
それとも、ソースを公開・非公開にするかについて規定のない



413 :デフォルトの名無しさん:2009/10/11(日) 20:09:43
(途中での書き込みすまん)

ソースを公開・非公開にするかについて規定がないから
抵触しないとみなせるの?

その辺がわからないんだよー。

414 :デフォルトの名無しさん:2009/10/11(日) 20:17:17
ライセンススレでやれ

415 :デフォルトの名無しさん:2009/10/11(日) 23:23:24
>>411
今ちょっとAA管理プログラム作ってて、大きさバラバラなTextBlockを一律64x64のサムネイル表示させてるのよ
いちいちスケール計算するのもなんだからVisualBrush
でもこれだと場合によっては表示されるまで10秒くらいかかる
コレクションバインドだと順次出すことも大変みたいだし困ってる

416 :デフォルトの名無しさん:2009/10/11(日) 23:34:36
じゃあRenderTargetBitmapでキャッシュ
WPFだからこそVisualBrushみたいな便利なものが使えるけど
一般的にはそういうアプローチを採るのが普通じゃないの

417 :デフォルトの名無しさん:2009/10/12(月) 01:21:20
>>416
やっぱそうか
GPU支援に期待し杉たかね

418 :デフォルトの名無しさん:2009/10/12(月) 12:30:22
いやGPU支援以前にVisualBrushがTextBlockを更新させてるせいだと思う

419 :デフォルトの名無しさん:2009/10/12(月) 20:21:36
WPFの最新開発環境整えるのにいくらかかるんだ?

420 :デフォルトの名無しさん:2009/10/12(月) 20:33:41
「最新の」なら0円だろ
「最高の」なら話は別だが

421 :デフォルトの名無しさん:2009/10/13(火) 10:04:40
コントロールを描画するのに必要なパラメータとして、依存関係プロパティ A,B,C があります。
A,B,Cの内どれかが変更されたら、それを元にコントロールの内容も更新に反映させたいのですが
A だけ変わってB,Cはそのままの場合や、A,B,C全部が変更される場合もあります。
更新回数を最低限にしたいのですが、こういう場合、描画のトリガーとしてどういう方法を用いるのが
理に適っているんでしょうか?

422 :デフォルトの名無しさん:2009/10/13(火) 14:32:18
必要なときにUpdateメソッドでも自力で呼んでやるのがいいんじゃね?

423 :デフォルトの名無しさん:2009/10/13(火) 16:18:41
普通に描画を無効にすれば、適当なタイミングで勝手に再描画してくれるでしょ

424 :353:2009/10/13(火) 17:32:42
アプリ起動時には無い、あとから動的に追加した要素のアニメーションをXAMLで記述することってできますか?
やはりコードで記述するしかないんでしょうか。方法あればヒントだけでもいいので教えてください

425 :デフォルトの名無しさん:2009/10/13(火) 17:33:46
レス番消すの忘れてた恥ずかしい

426 :デフォルトの名無しさん:2009/10/13(火) 17:43:36
リソースとして記述しとくぐらいはできると思うが

427 :デフォルトの名無しさん:2009/10/13(火) 18:15:02
うろ覚えでXAMLReaderとかなんとか言うのを見た気がする
XAMLファイル生成して後から読むとか出来るかも知れない

428 :デフォルトの名無しさん:2009/10/13(火) 20:20:38
ファイル生成しなくてもXamlReaderならStringから直接読める
でも動的に生成したXAMLを読むとかでなければリソースに書いとくのがベター

429 :デフォルトの名無しさん:2009/10/13(火) 20:29:06
なるほど、通常はリソースで、
生成したXAMLを読み込む場合はXamlReaderですね。どうも

430 :デフォルトの名無しさん:2009/10/13(火) 21:48:14
プログラムのスキンをXAMLで書かせるってのはあり?

431 :デフォルトの名無しさん:2009/10/14(水) 20:42:59
スキンの作成者に.NETやWPFについての知識を要求してもいいなら。
VS2010はXAMLでカスタマイズできるみたいだけど,そもそも開発者のためのツールだから話が別。

432 :デフォルトの名無しさん:2009/10/14(水) 22:41:52
新しいスキン、ニュースキン

433 :デフォルトの名無しさん:2009/10/14(水) 22:46:26
不親切だよね

434 :デフォルトの名無しさん:2009/10/14(水) 23:24:54
叩き台のXAMLを用意しとけば画像変えたりボタンの位置やサイズ変えたりくらいは
開発者でなくてもできるだろうけど,もっと弄りたかったら自分でMSDN読めというのはちょっとなあ

435 :デフォルトの名無しさん:2009/10/15(木) 02:49:23
どこまで自由度の高いスキンにするかに依存すると思う。

画像変えたりボタンちょろっと弄ったりする程度ならXAMLを弄らせる必要はないけど
もっと弄って根本からUI変更したいならXAML弄らせるのが一番だろう。
どこまでやるかによるけど、専用のUIマークアップ言語用意するのって結構手間かかるからねぇ

436 :デフォルトの名無しさん:2009/10/15(木) 10:05:45
つWPF Themes

437 :デフォルトの名無しさん:2009/10/15(木) 13:02:08
RichTextBoxでMS Pゴシック指定しても等幅表示されてるぽいのはなんでだ?

438 :デフォルトの名無しさん:2009/10/17(土) 18:08:27
むしろいまだに等幅がデフォじゃないのにイラつく

439 :デフォルトの名無しさん:2009/10/17(土) 18:32:43
普通のTextBoxならまだしもRichTextBoxで等幅がデフォルトとかないわー

440 :デフォルトの名無しさん:2009/10/17(土) 20:26:10
HTMLリファレンスみたなXAMLリファレンス本ってないかなあ

441 :デフォルトの名無しさん:2009/10/17(土) 20:58:00
網羅したらとんでもない厚さになるぞ
MSDNで引いたほうが早い

442 :デフォルトの名無しさん:2009/10/17(土) 21:34:10
Bindingとコントロール作成の概要をみっちり抑えた本を出してほしい。
じゃないと作って動いてくれても不安たっぷりものしかできない

443 :デフォルトの名無しさん:2009/10/17(土) 21:40:06
Bindingの書き方変わるとか変わらないとか

444 :デフォルトの名無しさん:2009/10/17(土) 21:41:53
まずBlendに自動コード補助っていうのか、Visual Stadioについてるコード補助を付けてくれたらもっとましになる気がする。
あとBlendのエディタもVSと同じように見やすくしてほs・・・

ここでいうことじゃないか

445 :デフォルトの名無しさん:2009/10/17(土) 21:43:37
Blend3のコードエディタはIntelisence効いてた気がする

446 :デフォルトの名無しさん:2009/10/17(土) 21:47:44
VS2008だとバインディングの記述とか補完してくれないから不便だな

447 :デフォルトの名無しさん:2009/10/17(土) 22:51:06
コードビハインドでnullチェックしなきゃいけないのがうざい

448 :デフォルトの名無しさん:2009/10/18(日) 19:23:42
>>445
マイクロソフトのサイトを読むとBlendのインテリセンスはC#とVBだけで
C++は機能しないみたいな書き方なんだよね。どう思う?

>XAML、C#、VB に対応した Intellisense を実装したコードエディタを搭載しているため、
>Expression Blend 内で直接コード編集をすることが可能です。
http://www.microsoft.com/japan/products/expression/products/blend_overview.aspx

VS2010にしても、開発担当者が「マイクロソフトは今後もVC++を重視する」みたいな発言を
わざわざしているところからして、どうもVC++の雲行きが怪しいんだよね。
まぁ、C++はもう終わりかな。

449 :デフォルトの名無しさん:2009/10/18(日) 19:41:23
C++はネイティブコードに力を入れるらしいよ
もともとC++/CLIってネイティブコードと.NETの相互運用のためだけに作られた言語であって
WPFなんか使えたって意味がない

450 :デフォルトの名無しさん:2009/10/18(日) 21:31:50
WPF+CPPとか使ってる奴いないと思う
てか、もとからBlendはVB、C#(SLはJavaScript)のみだ

451 :デフォルトの名無しさん:2009/10/18(日) 23:14:47
WPFをC++/CLIで使ってる奴なんて居ないだろw

452 :デフォルトの名無しさん:2009/10/18(日) 23:17:46
つまり、マイクロソフトがWindows GUIのスタンダードとしてWPFを採用することになると
ますますVC++は使い物にならなくなっていくってことだな?
.NETへの傾倒が強まれば必然的にVC++はあの世行きか。

453 :デフォルトの名無しさん:2009/10/18(日) 23:19:00
>>452
何年か前に見た夢だな。
現実になればいいが。

454 :デフォルトの名無しさん:2009/10/18(日) 23:23:40
>>452
そこはまあ上手く役割分担していくんだろう
C#もVBも高速化していったら終わりだが

455 :デフォルトの名無しさん:2009/10/19(月) 00:38:46
ここに1人いるぞ、WPF + C++/CLI。
いやまあ、HwndHostとかD3DImageとかの部分に使ったことがあるだけで、WPF部分はほとんどXAML/C#だけどね。

456 :デフォルトの名無しさん:2009/10/19(月) 00:51:33
.NETじゃサービスとかデバイスドライバとか書けないんだからC++が死滅するとかアリエナーイ

457 :デフォルトの名無しさん:2009/10/19(月) 01:08:24
Windowsサービスなら書けるが、どのサービスのことだ?

458 :デフォルトの名無しさん:2009/10/19(月) 01:08:40
どの種類のXAMLファイルでも分離コードは使えますか?たとえばResourceDictionaryのXAMLファイルとか。
というのもプロパティに値を代入するのにバインディングを使うのが面倒なのでそこだけコードでやりたいのです。

459 :デフォルトの名無しさん:2009/10/19(月) 08:49:16
依存プロパティはどう見ても設計ミス。

460 :デフォルトの名無しさん:2009/10/19(月) 10:07:47
>>456
http://www.xlsoft.com/jp/products/windriver/support/tech_docs/td128.html

461 :デフォルトの名無しさん:2009/10/19(月) 15:10:40
で結局WPFは実アプリでの使用に足るパフォーマンスのでる汎用的なプラットフォームになったのかね?
未だに向き不向きとかある?

462 :デフォルトの名無しさん:2009/10/19(月) 16:35:35
ブラウザアプリケーションはWPFのXBAPは衰退してシルバーライト使ってくださいにかわっていくと思う

463 :デフォルトの名無しさん:2009/10/19(月) 16:46:51
既にそうなってるよな。

464 :デフォルトの名無しさん:2009/10/19(月) 18:43:32
むしろ設計ミスは依存プロパティのようなニーズを想定できなかったCLRやC#の方だろ

465 :デフォルトの名無しさん:2009/10/19(月) 21:45:28
XAMLの要素のプロパティ名を設定したポリシーに従って並び替えてくれる機能ありませんか?

466 :デフォルトの名無しさん:2009/10/19(月) 21:52:32
自作
XMLだから簡単だろ

467 :458:2009/10/19(月) 22:01:35
hoge.xamlに対し、hoge.xaml.csファイルを用意して、
hoge.xamlのルート要素にx:Class="testApp.hoge"のようにhoge.xaml.cs中のクラスを指定。
hoge.xaml.cs中のクラスはpartialにしてコンストラクタにInitializeComponent();を追加すれば
うまくいきました。hoge.xaml.g.csはどのタイミングでかはわかりませんがVSが自動で作成してくれます。

468 :デフォルトの名無しさん:2009/10/20(火) 11:35:32
Toolbar 内に
<button Command="{Binding XXXCommand}">
 <Image />
</button>
みたいな感じでボタンを作りました。
CanExecute()==false のとき、クリック不可に
なるんですが、あわせてグレイアウト(もしくは
半透明に)したいんですが、どうすれば
よいでしょうか?

469 :デフォルトの名無しさん:2009/10/20(火) 12:11:19
デフォルトで白くなるはずだけど
それじゃダメってことならTemplateいじることになる

470 :デフォルトの名無しさん:2009/10/20(火) 14:24:38
白くなんのはIsEnableでね?
とうろ覚えてみる

471 :デフォルトの名無しさん:2009/10/20(火) 14:34:18
IsEnabledでも画像は変わらない

472 :デフォルトの名無しさん:2009/10/20(火) 15:07:17
そうか、画像か
Buttonの子はGridにして、そのGridの中にImageとRectangleを配置
でRectangleのFillは#9fffとかそんなのにして
Rectangle.StyleのTriggersにDataTriggerでButton.IsEnabledの変化時にRectangle.Visiblityを設定
とかどう?
ちなみにCanExecuteがfalse返すときはIsEnabledもfalseになるよ

473 :デフォルトの名無しさん:2009/10/20(火) 15:44:41
「WPFの文字表示はWindows標準のClearTypeから更に進化して、
横方向にはサブピクセルの、縦方向にはグレースケールのアンチエイリアスがかかる!」
というのがさかんに宣伝されてますが、実際表示させてみると(少なくともメイリオは)
縦方向のアンチエイリアスがかかってないような気がします。
http://uproda11.2ch-library.com/206376sm7/11206376.png

こういうものなんでしょうか?

474 :デフォルトの名無しさん:2009/10/20(火) 15:53:16
>>472
そこまでするならテンプレートでVSM使った方がいい

475 :デフォルトの名無しさん:2009/10/20(火) 17:59:37
>>473
今んとこそう言うもの
ぶっちゃけバグつか未実装部分

476 :デフォルトの名無しさん:2009/10/20(火) 23:11:53
>>473
メイリオの特性。Y軸アンチエイリアスは実装されているよ。
MSゴシックあたりで試すといい。


477 :デフォルトの名無しさん:2009/10/21(水) 17:55:38
ダウンロードの詳細 : Visual Studio International Feature Pack 2.0
ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7d1df9ce-4aee-467f-996e-bec826c5daa2

478 :デフォルトの名無しさん:2009/10/22(木) 00:14:17
単一のResourceDictionaryオブジェクトを、複数のリソースにMergedDictionariesしても大丈夫なんですか?
一応問題なく動いているようなんですが・・・

479 :デフォルトの名無しさん:2009/10/22(木) 00:40:51
その心配なるほど。
あんま心配してなかったし何も起きていない気がする。
ImageとかFreezableなオブジェクトも大丈夫なはずだよね?よね?

480 :デフォルトの名無しさん:2009/10/22(木) 16:35:08
深刻なメモリリークに悩まされるWPF
ttp://www.infoq.com/jp/news/2009/10/WPF-Memory-Leak

481 :デフォルトの名無しさん:2009/10/22(木) 16:38:51
まぁ、出たての技術だから仕方あるまい。

482 :デフォルトの名無しさん:2009/10/22(木) 16:59:56
アニメーション移動なんてするとき、せっかくコードが分離できるっていってんのに
俺はいまだに「このイベント呼ばれればこのストーリーボードを呼べ!」といったコードを書いてしまう。
というかこっちの方がまだ簡単で読みやすいと思ってしまうんだけど、みんなはどうしてる?

483 :デフォルトの名無しさん:2009/10/22(木) 20:59:13
コードからBeginしたほうがわかりやすいですよね。
量が増えると どうかというのがありそうですが、
その前にあんまアニメーション使わないw

484 :デフォルトの名無しさん:2009/10/22(木) 22:19:05
アニメーションのきっかけになるようなイベントを出してそれをアニメーションにつかうかはXAMLで定義って感じかね。
まぁどこまで分離出来るようにするかによるんだろなー

アニメは適度に使うとUXあがるとは思う。

485 :デフォルトの名無しさん:2009/10/23(金) 01:15:05
みんなBeta2入れた?
一部の奴が騒いでたビットマップフォントが表示されるようになったんだが。

486 :デフォルトの名無しさん:2009/10/23(金) 01:40:05
いま入れてる途中なんだが時間かかるな



487 :デフォルトの名無しさん:2009/10/23(金) 01:42:20
WPF4.0の「公約」だったもんね
http://blogs.msdn.com/text/default.aspx

488 :デフォルトの名無しさん:2009/10/23(金) 01:47:16
うん、普通に嬉しく思うよ

489 :デフォルトの名無しさん:2009/10/23(金) 02:13:30
MenuのPopupやComboBoxでClearType有効になったのもかなり嬉しいね。


490 :デフォルトの名無しさん:2009/10/23(金) 08:05:06
ListView のヘッダとかスクロールバーとかのデザイン(マウスがあると青く
立体的になるところ)を変えたいんですが Triggers で Background 変える
だけだと一瞬だけ変わってすぐに元の青いものになってしまいます。
ControlTemplate でやるのかなのかなと思うのだけどうまくできなくて
どこかにサンプルありませんか。
msdn のやつはみたんですが解説が少なくてポイントがよくわからないです

491 :デフォルトの名無しさん:2009/10/23(金) 09:00:09
MSDNのListView ControlTemplateの項に載ってるリファレンス実装を丸ごとListView.ControlTemplateにコピペして改造
どう弄ればいいかはそのテンプレート見ればだいたいわかる

492 :デフォルトの名無しさん:2009/10/23(金) 22:37:52
>>491
そのレベルに達していなくてmsdnのやつはStyleそのものしかないので
ListView のどこにそれぞれTemplateとかStyleとかで追加したらいいかわからないです

493 :デフォルトの名無しさん:2009/10/23(金) 23:56:10
ListViewは複雑でかなり変わったコントロールなのでまずはButtonなどで練習したほうがいい
button wpf controltemplate でググれ

494 :デフォルトの名無しさん:2009/10/24(土) 01:32:58
CodePlex に WPF Model-View-ViewModel Toolkit というのがある
これを使用した解説が欲しい

http://wpf.codeplex.com/wikipage?title=WPF%20Model-View-ViewModel%20Toolkit&ProjectName=wpf

495 :デフォルトの名無しさん:2009/10/24(土) 08:23:56
>>494
WPFはMVVMがメインストリーム。MSDNに有名な記事があるだろ。

496 :デフォルトの名無しさん:2009/10/24(土) 08:31:37
VMはそのVに特化したMの薄皮って認識で大体あってる?

497 :デフォルトの名無しさん:2009/10/24(土) 10:04:00
外れている。

498 :デフォルトの名無しさん:2009/10/24(土) 12:48:15
( ̄д ̄)エー

499 :デフォルトの名無しさん:2009/10/24(土) 13:53:39
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register(
"Data",
typeof(ObservableCollection<string>),
typeof(testcon),
new PropertyMetadata(new PropertyChangedCallback(OnDataPropertyChanged)));

とやってバインド元のObservableCollectionにADDしてもPropertyChangedCallbackが
呼ばれないのはなんでなんだぜ?
これが単なるStringだったりintだったりすると問題ないんだけど。

そもそもやり方が間違ってるとして、ObservableCollectionから追加や削除の通知を
受けたい場合はどうすりゃいいん?

500 :デフォルトの名無しさん:2009/10/24(土) 14:40:33
.Data.Add("hoge"); // Data 自体は変わってないのでOnDataPropertyChangedは呼び出されない
.Data = new ObservableCollection<string>(); // ここでOnDataPropertyChanged呼び出し

ObservableCollection<T>.CollectionChangedを使う

501 :デフォルトの名無しさん:2009/10/24(土) 21:45:00
>>500
おお、ありがとう。
こういうことでいいんかな?

public static readonly DependencyProperty DataProperty =
DependencyProperty.Register(
"Data",
typeof(ObservableCollection<string>),
typeof(testcon),
new PropertyMetadata(new PropertyChangedCallback(OnDataPropertyChanged)));

private static void OnDataPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
testcon tc = d as testcon;
tc.Data.CollectionChanged += new NotifyCollectionChangedEventHandler(tc.OnDataCollectionChanged);
}

private void OnDataCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// Dataに追加や削除があったら呼ばれるよ
}


502 :デフォルトの名無しさん:2009/10/24(土) 23:09:44
test

503 :デフォルトの名無しさん:2009/10/25(日) 00:43:56
MediaElement.SpeedRatio に値を代入しても
無視されるんだが、なんでだろ〜?
エラーはなんにもでないんですが。

504 :デフォルトの名無しさん:2009/10/25(日) 08:43:25
ファイル形式によってできるもんとできないもんがあるが
Windows Media Playerで再生速度変えられる?

505 :デフォルトの名無しさん:2009/10/25(日) 16:31:15
WPF4のWhat's NewにD3DやXNAとのInteroperabilityがない…

506 :503:2009/10/25(日) 22:22:34
>>504
そういう方法で確認できるのか。ご指摘の通り、
WMP でもだめだったよ。ありがとう。

507 :デフォルトの名無しさん:2009/10/25(日) 22:32:43
>>505
D3Dに関してはD3DImageでもまだ駄目?なんだよね……。

508 :デフォルトの名無しさん:2009/10/25(日) 23:30:51
Grid のうえに Button を配置して両者の Background を Black にしました。
すると、Button のワクだけが残ってしまいました。
この枠を消しつつ、その他の動作はデフォルトのままにする方法はありますか?
ControlTemplate は設定してみたんですが、マウスオーバーとかの動作も
消えてしまったので・・・。

509 :デフォルトの名無しさん:2009/10/26(月) 01:12:24
自分も悩んでてBlendでButtonを解体したりしていろいろ試してみたんだけど
そのワクは「Microsoft_Windows_Themes:ButtonChrome」っつーコントロールが描画してて
BorderBrushを変えようが何しようがどうにもならないので、
自前でこのページを手本にControlTemplateを手作りするしかないんじゃないですかね
http://msdn.microsoft.com/ja-jp/library/ms753328.aspx

Blendなら「SimpleButton」を元に自分で改造していくとか

510 :デフォルトの名無しさん:2009/10/26(月) 07:33:58
>>508
クリックやマウスオーバーに反応させるだけならCanvasでもなんでもいいのでは?

511 :デフォルトの名無しさん:2009/10/26(月) 08:46:40
>>508
枠も黒にすればいいとかそういう話ではなくて?

512 :508:2009/10/26(月) 12:12:19
みなさん、レスありがとうございました。

>>509
やっぱ ControlTemplate 手作りですか・・・。その方向で検討します。

>>510
Canvas を使うって方法は思いつきませんでした。
ただ、MVVM で作ってるんで、Command プロパティが欲しいので
その方法はむりかも。

>>511
Style で BorderBrush を Black にしても無視されます。
うちは VS2008SP1 ですが、バージョンによって挙動が違うのかな?




513 :デフォルトの名無しさん:2009/10/26(月) 12:15:51
FormattedText の Geometory を取得して、g.GetWidenedPathGeometry
すると、もとの文字にはない余計な線が一本入ってしまってるんですが、
("X" を取得すると "/X" みたいに)
↓のプログラムどこか間違ってますか?

var ft = new FormattedText("X",
 CultureInfo.CurrentCulture,
 FlowDirection.LeftToRight,
 FontFamily.GetTypefaces().ElementAt(0),
 16,
 Brushes.Black);

var g = ft.BuildGeometry(new Point(0, 0));
g = g.GetWidenedPathGeometry(new Pen(Brushes.Blue,1));
var path = new Path();
path.Data = g;
path.Stroke = Brushes.Blue;
path.StrokeThickness = 3;
grid.Children.Add(path);


514 :デフォルトの名無しさん:2009/10/27(火) 01:29:27
3Dの球体にボタンやテキストを配置してくるくる回転させながら操作するアプリを作ってみた
だからどうってわけじゃないがw

515 :458:2009/10/27(火) 13:45:53
うp

516 :デフォルトの名無しさん:2009/10/27(火) 13:46:36
あーまたやっちゃったよ。もう嫌になるなあ

517 :デフォルトの名無しさん:2009/10/27(火) 16:03:01
>>514
それ、タッチパネルデバイスならありじゃないのか
WM7はWPF動くのかのう

518 :デフォルトの名無しさん:2009/10/27(火) 17:03:09
>>517
動かなかったらVS2010できないではないか

519 :デフォルトの名無しさん:2009/10/27(火) 18:14:19
よくSFである、3D映像によるタッチパネルとかかっこいいかもな

それか、シムズみたいな3Dの部屋があって、テレビクリックすると
ズームして映像が流れるとか

520 :デフォルトの名無しさん:2009/10/27(火) 18:34:07
3Dとか生かしたナイスなアプリはいつでてくるかなー
自分的にはイノセンスの最後に出てきたロボット製造工場みたいのキボン

521 :デフォルトの名無しさん:2009/10/29(木) 02:26:39
Refrector 使って確認したんですが、
現行の WebBrowser は Navigating イベントで
postData を見ることができないようです。

VS2010 で、この点が改良されるかどうかご存じのかたが
いらっしゃいましたら教えてください。

522 :デフォルトの名無しさん:2009/10/29(木) 23:35:52
MatrixTransformで変形する要素をアニメーション化したいんですが、
行列のアニメーションってttp://msdn.microsoft.com/ja-jp/library/ms742524.aspx
ここみるとサポートされてるの離散方式だけなんですよね。
滑らかにアニメーションさせたいんですがどういう方法がありますか?

523 :デフォルトの名無しさん:2009/10/31(土) 19:28:08
TransformGroupで回転とスケーリングと一様歪みと平行移動を組み合わせる
MatrixKeyframeを継承してキーフレームを自作してしまうこともできそうだけど単純な線形補完では意味ないから余計に難しいと思う

524 :デフォルトの名無しさん:2009/11/03(火) 00:04:01
動画プレイヤーを作ってます。
DockPanel の中央に動画、下部にボタンのならんだツールバーのある普通の配置です。

この画面をフルスクリーン表示にしたときは、ツールバーを非表示にして、
マウスを画面下部に持って行ったらツールバーが出てくるようにしました。

現在は、Height を調整しているのでが、そうするとツールバーが出てくると、動画のサイズが変わってしまいます。
ツールバーを表示しても動画のサイズを変えないようにするにはどうしたらよいでしょうか?

わかりにくい文章ですみません。


525 :デフォルトの名無しさん:2009/11/03(火) 01:52:06
同じパネルに入れないで、かつZオーダーいじってみたらどうだ

526 :デフォルトの名無しさん:2009/11/04(水) 01:23:21
まずなんで動画プレイヤーなんて作ろうとするのか理解できない。
Media Playerで十分。

527 :524:2009/11/04(水) 02:17:59
>>525
なるほど。その方法ためしてみます。
ありがとございました。

528 :デフォルトの名無しさん:2009/11/06(金) 02:34:13
SplitButtonを再現したくて試行錯誤してるがどうもうまくいかない…
自分でユーザーコントロール/カスタムコントロール作ろうとすると
とたんに難易度が跳ね上がって今の自分の手には負えない
誰かいい方法を知りませんか?

つーか自分の所のUXガイドライン(http://msdn.microsoft.com/ja-jp/library/aa511453.aspx)
に載せてるコントロールくらいは標準で持っていて欲しい

529 :デフォルトの名無しさん:2009/11/07(土) 02:22:15
1つのプロパティにおいて、アニメーションを合成することってできる?
例えば、すばやく右へ平行移動してる最中にクリックすると左への平行移動も始める(結果、減速してるように見える)
ってなことを1つのRenderTransformでやる。
Canvasなんかのコンテナ用意して別々のRenderTransformに適用すればうまくいきそうだけど、
できるなら1つのでやってみたいなあ、と。あんまり意味ないかな?

530 :デフォルトの名無しさん:2009/11/07(土) 09:29:24
TransformGroupでどうだ?

531 :デフォルトの名無しさん:2009/11/07(土) 11:14:42
WPF,compizとかと比べるとダメダメじゃね(´・ω・`)

532 :デフォルトの名無しさん:2009/11/07(土) 11:42:22
なんで全く関係の無いものを比べてんの?

compizと対応するのはDesktop Window Managerだろ?
WPFと対応するのはGTKやQTだろ?

533 :デフォルトの名無しさん:2009/11/07(土) 12:10:24
>>528
ttp://www.codeproject.com/KB/WPF/WpfSplitButton.aspx
  ググレカス [ Gugurecus ]
  ( 2006 〜 没年不明 )
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ ,  /,   ,\  Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
(省略されました・・全てを読むにはここを押してください)

534 :デフォルトの名無しさん:2009/11/07(土) 13:32:56
>>530
なんで気づかなかったんだろう
TranslateTransform2つ用意したらできたよ!ありがとう

535 :デフォルトの名無しさん:2009/11/12(木) 03:03:20
ある TextBlock のフォントサイズは、別の TextBlcok のフォントサイズの
1/2っていう指定を xaml でしたいんだけど、IValueCoverter を実装する以外に
方法ないかな?

536 :デフォルトの名無しさん:2009/11/12(木) 15:17:09
>>535
ないとおもわれる。

537 :535:2009/11/12(木) 17:05:12
>>536
できれば xaml だけですませたかったんだけど、やっぱ無理なんだね。
ありがとう。IValueConverter実装で行ってみる。


538 :デフォルトの名無しさん:2009/11/13(金) 10:05:13
>>537
まあ、根本的な解決にはなってないが、どうしてもXAMLだけで済ませたいならRendarTransformで描画を半分にしちゃうとかw

539 :デフォルトの名無しさん:2009/11/15(日) 19:16:29
WPF使ってる人なんていんの?

540 :デフォルトの名無しさん:2009/11/15(日) 19:33:07
いっぱいいるぞ??


541 :デフォルトの名無しさん:2009/11/15(日) 19:37:32
日本に限定しなけりゃね。Visual Studio 2010が出れば状況が変わるかもしれんが、
いかんせん今では日本語では資料がないし、良い図書がない。

WinFormならいきなり新人に触らせてもググりながら覚えていけるだろうがWPFは無理。
本もEssential WPF程度しかない。アレはある程度C#/WPFの知識がある人じゃないと読めないだろ。

542 :デフォルトの名無しさん:2009/11/15(日) 20:07:09
MVVMもなんか色々面倒だしなぁ。

βさわってないからなんともいえないけど
Expression BlendみたいなのがMS製品で存在する以上、
VS2010でもフォームいじりは今一な感じになりそうな気がするよ・・・

543 :デフォルトの名無しさん:2009/11/15(日) 20:23:07
WinForms相当の見た目でいいなら2008のデザイナでも十分だろ

544 :デフォルトの名無しさん:2009/11/15(日) 20:28:15
Blendたけーしなあ
SVGならInkscapeあるしこれをXAMLに変換できれば画像はなんとかなる?

545 :デフォルトの名無しさん:2009/11/15(日) 20:29:36
>>543
プロパティの説明が出なかったりXAML直接編集しないと出来ないこと多かったりで
なんか完成度低くない?

546 :デフォルトの名無しさん:2009/11/15(日) 20:59:04
VS2010のWPFデザイナは進化してるんだっけ?
Freamwork4の見どころのPallarelは3.5でも使えるようだし
今Blend3+VS2008な人は2010に移行する必要ないよね

547 :デフォルトの名無しさん:2009/11/15(日) 21:12:43
ttp://www.atmarkit.co.jp/fdotnet/scottgublog/20091111wpf4/wpf4.html
WPF4自体はかなりいろいろ改善されてるみたいだよ
やっぱりVS2010に使われたのが大きいんだろうな

548 :デフォルトの名無しさん:2009/11/15(日) 21:16:20
Blend3におけるWPF4のサポをSP以外にしたら絶対に許さないよ

549 :デフォルトの名無しさん:2009/11/15(日) 21:19:45
CLR4で作り直さないといけないからSPでは無理だろ
アップロードに金がいるかどうかは別だが

550 :デフォルトの名無しさん:2009/11/15(日) 21:20:19
しかしながら
多くの人がインスコを渋っていた.NET3.5もWin7ではプリインスコになったってことで
気軽にWPFを使う気になったが
WPF4&.NET4でまた「動かない」「入れたくない」云々のご意見を頂戴することになるのか・・・

551 :デフォルトの名無しさん:2009/11/15(日) 21:45:30
タブブラウザのメニューリスト式タブ切り替えのようなものを作ってるのですが、
例えばこのようなクラスがあるとして、
public class Tab{
public bool IsCurrent{ get; set; } //今表示されてるタブか否か
public String Title{ get; set; } //タブのタイトル
}
これをObservableCollectionに突っ込んだクラスを作って、
public class Tabs{
public ObservableCollection<Tab> TabsList { get; set; }
}
これをXAMLでContextMenuのItemsSourceとバインディングして、
DataTemplateを作ってあげて複数のTitleが一覧表示されるところまではうまくいったのですが、
:
<ContextMenu DataContext={(略)} ItemsSource={Binding(略)}>
<ContextMenu.ItemTemplate>
 <DataTemplate><Grid><TextBlock Text="{Binding Title}"/></Grid></DataTemplate>
</ContextMenu.ItemTemplate>
:
ItemsSourceから生成されているはずの
各々のMenuItem要素のプロパティにアクセスするにはどうすればいいのでしょうか?
IsCheckedプロパティをIsCurrentとバインドさせたいと思っています

552 :デフォルトの名無しさん:2009/11/15(日) 21:50:24
SPでランタイムが配布されるまでは3.5で頑張るさ・・・

553 :デフォルトの名無しさん:2009/11/16(月) 12:24:29
AllowTransparencyを有効にしてるとウィンドウ枠が消えるけど
任意にリサイズさせたいときはどうしてる?やっぱりCanResizeGripしかない?

554 :デフォルトの名無しさん:2009/11/16(月) 12:45:31
>>553
それが一番手っ取り早いと思うけど。

555 :デフォルトの名無しさん:2009/11/16(月) 12:55:36
>>554
やっぱりそうなのかあ
ZuneSoftwareみたいな、ドロップシャドウを出しつつ全方向からリサイズできたらかっこいいなあなんて思った

556 :デフォルトの名無しさん:2009/11/16(月) 21:29:43
>>551
ContextMenu.ItemContainerStyleでスタイルを設定するのが楽かな

557 :デフォルトの名無しさん:2009/11/17(火) 17:54:24
質問です。

[前提]
 Gridにbackground、foregroundという名前の二つのListViewを重ねて表示しています。
 両方ともItemsPanelをCanvasに設定し、それぞれ任意の位置に図形を表示します。

[やりたいこと]
 foreground上の図形がクリックされた場合それを選択するのですが、
 クリックしたポイントに図形がない場合、background上の図形を調べ選択したい。

[現状]
 foreground、backgroundの順でHitTestしているのですが、なんだか二度手間のような気がします。
 
ご教示お願いします。

558 :デフォルトの名無しさん:2009/11/17(火) 18:57:36
>>556
できました。ありがとうございます
BlendだとContextMenuのプロパティをGUIから新規作成するのが容易にできないので見落としてました

559 :デフォルトの名無しさん:2009/11/17(火) 19:37:21
>>557
つTunnelイベント

560 :デフォルトの名無しさん:2009/11/17(火) 21:31:56
Setterっていうの邪魔だで削ってちょ

561 :デフォルトの名無しさん:2009/11/17(火) 22:44:01
>>541
ある程度ってどの程度?
今日本屋さんで注文しちゃったよ
ウワーーーーン

562 :デフォルトの名無しさん:2009/11/18(水) 00:01:58
なんで名前空間がURLなの?
わけわかんない

563 :デフォルトの名無しさん:2009/11/18(水) 00:05:05
むしろその発言がわけわかんない

564 :デフォルトの名無しさん:2009/11/18(水) 00:19:17
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
こういうの気持ち悪い
わけわからん
アクセスしてもThe page cannot be foundってでるし

565 :デフォルトの名無しさん:2009/11/18(水) 00:20:44
たぶん、XML名前空間のことだろ
とりあえず、XMLの基礎知識なのでスレチ

566 :デフォルトの名無しさん:2009/11/18(水) 02:34:23
BimapEffect は重いらしいんで、Effect に使用と思ったら、
OuterGlowBitmapEffect がないんだけど、
これは BitmapEffect 使ってろってこと?

567 :デフォルトの名無しさん:2009/11/18(水) 02:56:51
SP1でBitmapEffectもハードウェアアクセラレーションされるようになったらしいよ?

568 :デフォルトの名無しさん:2009/11/18(水) 03:19:14
ttp://karlshifflett.wordpress.com/2008/11/04/wpf-sample-series-solution-for-the-obsolete-bitmapeffect-property-and-rendering-an-outerglowbitmapeffect/
DropShadowEffectでおk だそうだ

569 :デフォルトの名無しさん:2009/11/18(水) 14:47:31
IsEditableがtrueなComboBoxでIMEをオフにするにはどうすればいいんですか?
TextBoxならInputMethod.IsInputMethodEnabled="False"でできるんですが…

570 :デフォルトの名無しさん:2009/11/18(水) 16:27:09
>>561
C#2.0の機能すらよくわからない俺でもそれなりに読めるけど
けっこうちんぷんかんぷん。
「こんな機能を実装しました。他にも同様の手段がありますがこうこうこういう理由でこれを選びました。」
「従来のだとこういう風なことはこういう理由で実現しづらいものだった。
なのでWPFではこういう手法でこの機能を用意しました」
「なぜこのオブジェクトが必要なのかはこういう理由で・・・」
みたいな事を詳しくいっぱい書いてるものだと思ってたけど、期待したほどでもなかったな。
まだコントロールの章を読んでる途中だけど

571 :デフォルトの名無しさん:2009/11/18(水) 16:52:28
>>569
Blendを使っている場合は、テンプレートの編集→コピーして編集 を行い、
Blendを使用していない場合は、
ttp://msdn.microsoft.com/ja-jp/library/ms752094.aspx
に書かれているComboBoxのスタイルを<Window.Resources></Window.Resources>タグがなければ記述し、このタグ内にコピペする。
あとは、PART_EditableTextBoxというのがComboBoxの入力コントロールとなるのでこれにInputMethodを設定すれば
いけると思われ。(ごめん今は検証できる環境がないので未検証)

572 :デフォルトの名無しさん:2009/11/18(水) 19:39:59
>>559
ありがとうございます。

foregroundのMouseDownなりをキャッチして、
e.OriginalSourceがnullならbackgroundをHitTestという理解でいいでしょうか。

573 :デフォルトの名無しさん:2009/11/18(水) 20:37:33
>>541
IntelliSenseが最良のC#参考書と言われるのと同じように、
結局Blendであちこちいじってみるのが一番の習得法だったりする、というのが実感
でも参考書代わりにするにはちょっと高すぎる

Blend Expressが欲しいなあ
MSとしてはそこの領域はVS(Express)2010のXAMLデザイナに任せるということなのかもしれないけど

574 :デフォルトの名無しさん:2009/11/18(水) 20:54:54
>>570
あの本は重要な部分の説明がさりげなくボロっと落ちてたりする。
各種機能を一回触ってある程度使って中身を分かっている人なら理解できるだろうが、
ゼロベースで読んだらかなり苦戦すると思う。

575 :569:2009/11/18(水) 22:29:10
>>571
スタイルはまだよく理解できてないので、添付プロパティで対処しました。
ttp://codepad.org/31OfMdr2
Loaded後じゃないとPART_EditableTextBoxが見つからないみたいです。
ありがとうございました。

576 :デフォルトの名無しさん:2009/11/18(水) 23:04:51
MergedDictionariesってなによ
最初から全部MergedDictionariesにしとけよ
いちいち書かせるなよ
めんどくせーな

577 :デフォルトの名無しさん:2009/11/19(木) 00:04:49
<ContentControl Content="{Binding}">
 <ContentControl.Style>
  <Style TargetType="ContentControl">
   <Style.Triggers>
    <DataTrigger Binding="{Binding Hoge}" Value="{x:Null}">
     <Setter Property="ContentTemplate" Value="{StaticResource temp1}" />
    </DataTrigger>
   </Style.Triggers>

   <Setter Property="ContentTemplate" Value="{StaticResource temp2}" />
  </Style>
 </ContentControl.Style>
</ContentControl>

Bindingの値によって表示するコントロールを変更するXAMLなんですが、こんなやり方でいいんでしょうか?
もっとスマートなやり方ないでしょうか?

578 :566:2009/11/19(木) 00:46:10
>>568
ありがとう。助かった。

579 :デフォルトの名無しさん:2009/11/19(木) 13:02:07
XAMLプログラミングって読んだほうがいい?

580 :デフォルトの名無しさん:2009/11/19(木) 13:16:21
>>579
スタイルやテンプレート、バインディングに関してあまり自身がないなら
読んだほうがいいかも。
3Dのことに関しても書かれているが、興味なければ読み飛ばしてOK。

581 :デフォルトの名無しさん:2009/11/19(木) 13:19:31
>>580
やさしい人ありがとう

582 :デフォルトの名無しさん:2009/11/19(木) 16:04:01
ttp://gigazine.net/index.php?/news/comments/20091119_internet_explorer_9/
WPF4.0製か?w

583 :デフォルトの名無しさん:2009/11/19(木) 16:19:39
D2Dを直接使ってるんじゃね

584 :デフォルトの名無しさん:2009/11/19(木) 21:05:16
直接ってWPFがDirect2D使うことはないでしょ
Direct2DってDirect3Dのラッパーみたいなもの
立ち位置としてはWPFと同じようなものなので使う意味がない

585 :デフォルトの名無しさん:2009/11/19(木) 22:59:08
WPFアプリからDirectWriteを扱う必要性もない

586 :デフォルトの名無しさん:2009/11/19(木) 23:33:47
その辺勘違いしてる人多いよな
D3DXみたいなものに過ぎない

587 :デフォルトの名無しさん:2009/11/19(木) 23:51:36
IE9の描画にWPF使ってるのか?って話に対して
(WPFを使わず)Direct2Dで描画しているのだろうと書いたわけだけど?

588 :デフォルトの名無しさん:2009/11/19(木) 23:53:17
それが現実的にありえないという話では?

589 :デフォルトの名無しさん:2009/11/19(木) 23:55:44
??
IE9の描画にWPF使ってるんじゃね?
→WPF使わなくてD2D使ってるんじゃね?
→WPFがD2D使うわけないじゃん(????)

ってことだよな。

590 :デフォルトの名無しさん:2009/11/19(木) 23:57:29
で、おまいらWPFつかってるの?
なんか昔は柔軟だけどもっさもさだった気がしたんだが、その辺は使えるレベルになったんでしょうか?

591 :デフォルトの名無しさん:2009/11/19(木) 23:58:27
>584
この人の読解力がダメダメって事でFA。

592 :デフォルトの名無しさん:2009/11/19(木) 23:59:35
XPだともっさもさ

593 :デフォルトの名無しさん:2009/11/20(金) 00:15:45
7とVistaだけサポートするからたぶん大丈夫

594 :デフォルトの名無しさん:2009/11/20(金) 00:15:49
WPF使ってることがうりになるぐらいだから
まだ普及したとは言えないよなぁ
Silverlightだけ生き残ったりして

595 :デフォルトの名無しさん:2009/11/20(金) 00:28:26
正直SilverlightはDrawingVisualだけ実装して欲しい。

596 :デフォルトの名無しさん:2009/11/20(金) 00:37:43
WPFってVisual表現の最終形な感じがする。
扱いにくいのがアレだが

597 :デフォルトの名無しさん:2009/11/20(金) 00:43:45
http://blogs.msdn.com/directx/archive/2009/11/18/internet-explorer-announces-to-use-directwrite-direct2d.aspx

598 :デフォルトの名無しさん:2009/11/20(金) 00:45:02
がーんだな

599 :デフォルトの名無しさん:2009/11/20(金) 00:46:11
>>585
>WPFアプリからDirectWriteを扱う必要性もない

ん?
.NET 4 beta2のWPFアプリではdwrite.dllがプロセスに読み込まれてるよ。
実際どこかでDirectWriteを使うって話も読んだ気がする。

600 :デフォルトの名無しさん:2009/11/20(金) 00:51:02
確かに似たようなもんだが、Direct3Dとの相互運用がマシになるなら
WPFがD2D/DWriteをインフラに使うのは十分ありじゃね?

601 :デフォルトの名無しさん:2009/11/20(金) 01:44:38
>>599
あ、そうだったんですか。
「DirectWriteはWPFが自前で行ってるテキスト処理と同等の表現を
Win32アプリからでも扱えるAPI」だと聞いてたもんで。

じゃあWPF4ではテキスト処理をDirectWriteに委任することになったってことですかね?

602 :デフォルトの名無しさん:2009/11/20(金) 06:23:02
んーそこら辺の処理を両方で実装することないから、WPFは2Dに関してはそっちを呼び出すことにしたって事じゃないかね?


603 :デフォルトの名無しさん:2009/11/20(金) 07:53:14
>>597
URL見ただけでどんな記事かわかるってのはいいなw

604 :デフォルトの名無しさん:2009/11/20(金) 12:32:58
Direct2DやWriteを取り入れて
これまでより速くなることを期待してもいいのかな?

605 :デフォルトの名無しさん:2009/11/20(金) 12:46:29
描画で落ちてるか、パース過程やその他の処理で落ちているのか。
そこ問題が明らかでない限りなんともいえないでしょ。

606 :デフォルトの名無しさん:2009/11/20(金) 13:04:12
描画で落ちてるからDirect2Dを使うんだろ

607 :デフォルトの名無しさん:2009/11/20(金) 13:41:48
GDIからD2Dにスイッチしてfpsが上がるデモをやってる位だから
少なくとも地図ぐりぐりスクロールみたいなAJAXアプリでは
描画がボトルネックになってると認識してるんでしょう。
あとテキスト描画エンジンを一新したいという意図もあるだろうし。

608 :デフォルトの名無しさん:2009/11/20(金) 20:46:48
マネージドでGDI+で描画してたのってD2Dで速度アップとかするんだっけ?

609 :デフォルトの名無しさん:2009/11/20(金) 20:53:02
http://www.itmedia.co.jp/enterprise/articles/0911/20/news077.html
VS2010はともかくOffice2010はWPFアプリじゃないだろう…

610 :デフォルトの名無しさん:2009/11/20(金) 21:00:53
>>604
それは間違い
取り入れたというより,WPFの低レベルな部分をC++からも使えるようにしたようなものを
Direct2DやDirectWriteと呼ぶことにしただけ

611 :デフォルトの名無しさん:2009/11/20(金) 21:07:17
>>610はどう読んだらそういうレスになるんだろう?

612 :デフォルトの名無しさん:2009/11/20(金) 21:14:49
WPFの話なんだかIEの話なんだかごっちゃになってないか??
◯(IEに)D2Dを取り入れて速くなることを期待
×(WPFに)D2Dを(ry


613 :デフォルトの名無しさん:2009/11/20(金) 21:20:56
WPFのWebBrowserはどうなるんだろ
D2D使うんだったら空域分けずにWPFのサーフェスに直接描画することもできそうなもんだけど

614 :デフォルトの名無しさん:2009/11/20(金) 21:49:05
>>612
それは逆だろう。
>>599の「.NET4ではDirectWriteを使っているらしい」という
レスから話が繋がってる。

615 :デフォルトの名無しさん:2009/11/20(金) 21:49:59
WPFはアプリケーションをHTMLでつくっちゃおうというものと考えていいですか?
HTMLの勉強を先にしたほうがいい?

616 :デフォルトの名無しさん:2009/11/20(金) 21:51:44
そんな何も調べないで真っ先にこんなところで聞くようじゃ
何やっても身に付かないよ。

617 :デフォルトの名無しさん:2009/11/21(土) 00:16:44
WPF、なんかいまいち波に乗り切れてないような・・・
なんでだろね。ハードル高いのか?必要ないのか?

ちまたではLinuxの奴の方がすごいとかも聞くんだが、どうなんだろ?
アーキテクチャ的に、あとプログラミングモデル的に両者の違いとか教えてたもれ。

618 :デフォルトの名無しさん:2009/11/21(土) 00:19:57
まったくの別物なんだから「使ってみろ」としか言えん

619 :デフォルトの名無しさん:2009/11/21(土) 00:42:37
何も手を動かさないでうわべだけの評論を繰り返す典型例 >>617

620 :デフォルトの名無しさん:2009/11/21(土) 02:08:04
自由に移動拡大のできる2Dのグリッドを表示したいんですがこういうのWPFで扱うときどうするのが正解なんでしょう?


621 :デフォルトの名無しさん:2009/11/21(土) 02:27:03
>>617
個人的には「遅いから」のひとことに尽きるような。

622 :デフォルトの名無しさん:2009/11/21(土) 02:50:37
Vista/7なら速いです、はい

623 :デフォルトの名無しさん:2009/11/21(土) 02:54:32
>621
言うほど遅くもないだろ。

.NETの技術は業務利用されてナンボだと思うんだけど、まだ一部にWin2K端末が
残ってる企業は多々あるから、積極的に採用しづらいんじゃね?少なくともウチはそう。
来年〜再来年あたりは状況が変わってくると思うけどね。

バインディングシステムが強力なので、個人的にはすぐにでも乗り換えたい。


624 :デフォルトの名無しさん:2009/11/21(土) 05:09:06
WindowsFormに比べると、相当に重たいでしょ。

AtomのNetbookにWPFアプリは使いものにならないレベル

625 :デフォルトの名無しさん:2009/11/21(土) 06:12:24
Vista世代(XP後期)以降の普通のデスクトップPCをターゲットに開発してるから、そんな貧弱な環境はどうでもいいや
2kと同様に切り捨ててる。

626 :デフォルトの名無しさん:2009/11/21(土) 08:28:04
切り捨てるって判断できるのはお客さんだからなぁ。
PC 入れ換え代込みで納得してもらえる程 WPF を積極的に押せる説得材料が思いつかない。


627 :デフォルトの名無しさん:2009/11/21(土) 08:56:27
官公庁に景気対策だって言ってやればいい

628 :デフォルトの名無しさん:2009/11/21(土) 09:00:43
>623
INotyfyPropertyChangedは書くのが正直めんどくさい。

>625
まじっすか・・・
Linuxで3Dぐにょぐにょやってるやつは速そうなのに、あれとはやってることが別物なの?





629 :デフォルトの名無しさん:2009/11/21(土) 09:16:20
ゲームならスペック上げるのもまあ納得してもらえるかもしれないけど
業務アプリは難しいだろうね。
作り易いら工数下ります!って言えるほど習熟してないしなぁ・・・

ところで将来的にWindowsFormは廃止されるのかな?

630 :デフォルトの名無しさん:2009/11/21(土) 11:14:26
WPF使われないのは開発環境が貧弱だからだ、ってーのはM$も認識してる
VS2010待ちだな

631 :デフォルトの名無しさん:2009/11/21(土) 11:42:47
>628
確かに最初は面倒臭いけど、フォームクラスにイベント処理をぐちゃぐちゃ
書くより全然マシだと思う。
透過プロキシ使うとか、INotyfyPropertyChangedの実装を楽にする方法が
無いわけじゃないし。

632 :デフォルトの名無しさん:2009/11/21(土) 12:52:45
WPFが使われない理由って、(それなりにちゃんとした)デザインが面倒だからじゃないの?

633 :デフォルトの名無しさん:2009/11/21(土) 13:15:23
XAMLのできが悪いからに決まってる

634 :デフォルトの名無しさん:2009/11/21(土) 13:38:40
BlendにVS並みのコード補助が効かないのが致命的

635 :デフォルトの名無しさん:2009/11/21(土) 17:32:22
WPFで作られたVisualStudio2010が悲惨な出来だからなあ

636 :デフォルトの名無しさん:2009/11/21(土) 17:38:44
betaは伝統的に重いって聞いたけど
正式版に期待

637 :デフォルトの名無しさん:2009/11/21(土) 20:05:26
WPFってイントラじゃ致命的なぐらいおよびじゃない気がする

638 :デフォルトの名無しさん:2009/11/21(土) 20:25:13
イントラっていうか、普通の業務システムではいらんな。
BIやエンジニアリング分野にはいいかもしれんけど。

639 :デフォルトの名無しさん:2009/11/21(土) 20:34:48
eコマースなら出番があるかもしれん
Panel系がどんな環境下でもそれなりに崩れずに見えるんなら、だが

640 :デフォルトの名無しさん:2009/11/21(土) 21:09:40
Panel系はバカ正直な動作しかしない
崩れるかどうかは使い方の問題

641 :デフォルトの名無しさん:2009/11/22(日) 00:27:14
>>632
個人的には、これが正解かな。
WinFormは、ど素人でも見た目はそれなりの形になるのがいいところ。

642 :デフォルトの名無しさん:2009/11/22(日) 00:52:26
起動が遅いよ。


643 :デフォルトの名無しさん:2009/11/22(日) 00:52:28
まぁFormsは外部からコントロール持ってこないか作らない限りちょっと何かやろうとすると破綻するわけだが。

644 :デフォルトの名無しさん:2009/11/22(日) 01:24:42
WinFormはいまのままでいいよ。それ以上はWPFの出番だね。

WPFぐらいになるとWinForm使えるレベルの人材では絶対無理な領域なんだよなぁ。
生産性求めるというより、ある程度お金賭けてでも視覚化すること効果のある分野が普及しそうに思う。


645 :デフォルトの名無しさん:2009/11/22(日) 01:43:12
美的感覚を要求されるからな

646 :デフォルトの名無しさん:2009/11/22(日) 04:28:20
http://stackoverflow.com/questions/561029/scroll-a-wpf-flowdocumentscrollviewer-from-code
ここのやり方で ScrollViewer は取得できたけど、
1000行くらいの FlowDocument を C# コードで作って
FlowDocumentScrollViewer.Document = document;
としたあとすぐに ScrollViewer.ScrollToEnd() すると300行くらいの
中途半端なところでスクロールが止まってしまうorz
ドキュメントの最後を表示させたいんだけど何か方法はない?

647 :デフォルトの名無しさん:2009/11/22(日) 09:19:40
とりあえずポトペタでも書けるわけだし、遅いのはPCの性能があがれば解決するし。
VCのデザイナがWinFormと同レベルぐらいになって
カスタムコントロールが出揃えば業務システムなんかでも使われるようになるんじゃないかね。


648 :デフォルトの名無しさん:2009/11/22(日) 10:41:32
客の環境で遅いのは致命的な問題
非開発系の環境ではXP + Celeron1Gあたりが普通に使われている

そういうマシンが全部死ぬまで簡単には普及しないんじゃないか?

649 :デフォルトの名無しさん:2009/11/22(日) 11:11:43
今のところ、客の発想がWinFormsレベルだから、WPFの出番がないのだと思う。

フリーソフトやマイクロソフトの製品でWPFがある程度使われるようになれば
客からWPFでないと実現しにくいような要求が出てきて、
自然とWPFが採用されるんじゃないかな?

650 :デフォルトの名無しさん:2009/11/22(日) 11:52:19
Formの上でWPFの様なことが出来る仕組みを作ったうちの会社は勝ち組(´・ω・`)

651 :デフォルトの名無しさん:2009/11/22(日) 14:37:35
業務システムと言えば、Formにコントロールを100個も200個も貼り付けて
「なんか重いんですけど」とか「なんかちらつくんですけど」となるのが
WinFormのFAQだった気がする。

最近はあまり見ない気もするけど、
WPFじゃなくてWebアプリに持って行かれたのかねぇ。


652 :デフォルトの名無しさん:2009/11/22(日) 14:42:24
Webアプリでも10000件のレコードを表示してくれ、
それぞれボタンを押して処理させてくれ、
画面遷移は少なくしてくれだのなんだので
結局、重くなるループ。

653 :デフォルトの名無しさん:2009/11/22(日) 15:02:00
コントロールの動作の細かいところでプロパティがない
とか用意されてないやつを変えたいというのも FAQ だよ
なぁ。API を使ってこのメッセージを…みたいに返すやつ。
WPF ならすぐだなってのも多い


654 :デフォルトの名無しさん:2009/11/22(日) 16:35:10
>>652
ajaxでクリアできる問題ばかりだな

655 :デフォルトの名無しさん:2009/11/22(日) 18:02:13
そうなんだよな。
ただなんかWebアプリっていうよりajaxってなんかひ弱な感じがしない?
バッドノウハウの塊ってのはいいすぎだけど
ライブラリが乱立しすぎてなんか怖い

656 :デフォルトの名無しさん:2009/11/22(日) 18:07:36
ここでSilverlightですよ

657 :デフォルトの名無しさん:2009/11/22(日) 18:10:06
>>654
ああ、要件上は解決できるさ。要件上はな。

658 :デフォルトの名無しさん:2009/11/22(日) 18:22:24
Silverlightへの力の入れ方は異常
そのうちWPFも吸収されるんじゃね

659 :デフォルトの名無しさん:2009/11/22(日) 18:23:58
デベロッパの期待がSilverlightのほうが上なんだろうね

660 :デフォルトの名無しさん:2009/11/22(日) 22:14:01
HTML5やSilverlightで
X-Windowは完全に死んだね

661 :デフォルトの名無しさん:2009/11/22(日) 22:33:08
生きてたことってあったか・・・?


662 :デフォルトの名無しさん:2009/11/22(日) 22:49:19
尊厳死の話か?

663 :デフォルトの名無しさん:2009/11/23(月) 00:17:28
Grid で任意のセルに割り当てられた UIElement を取得するにはどうしたらいいの?

uiEle.SetValue(Grid.RowProperty, y);
uiEle.SetValue(Grid.ColumnProperty, x);

で割り当てはできたんだけど、grid.GetUIElementAt(x,y) みたいなメソッドを
見つけられないんだ。


664 :デフォルトの名無しさん:2009/11/23(月) 00:23:18
ないよそんなの
同一のRow&Columnに複数の要素入れることもできるんだから
Grid.ChidrenをループしてRowとColumnを取得して判断したら?
あ、RowSpan/ColumnSpanの考慮も必要か

それから普通Grid.SetRow/SetColumnメソッド使う

665 :デフォルトの名無しさん:2009/11/23(月) 00:26:42
セルに要素を割り当ててるんじゃなくて要素にセルを割り当ててるんだし
Gridのレイアウトに使うだけの情報だから取得が必要な使い方をするのが間違ってる

666 :デフォルトの名無しさん:2009/11/23(月) 00:27:17
WPFのバインディングって目玉機能みたいに言われてるけど
昔のアプリでも似たようなこと実現できてるよね。
WPFからアプリ開発はじめた身としては以前とどう違うのかさっぱりわからん
かといっていまさらWinFormとかやりたくないしな

667 :デフォルトの名無しさん:2009/11/23(月) 00:32:23
スライダー動かしたらテキストボックスの値が変わるとか
WPFなら一瞬でできるけどWinFormsだとデータソースとかいちいち介さないといけなくて余計に面倒で普通にコード書いたほうが早い

668 :デフォルトの名無しさん:2009/11/23(月) 02:26:20
・WinFormsは、一部の非Control(MenuItemなど)にバインドできないのがいまいち。
 IBindableComponentを実装すればいいんだけど、面倒くさい。サンプル少ない。
・FormatイベントやParseイベントよりも、IValueConverterのほうがスマートだと思う。


669 :デフォルトの名無しさん:2009/11/24(火) 03:10:42
TabControlのTabItemをItemsSourceで生成して、
ContentTemplateにいろいろコントロール入れてもインスタンスは1個しか作られないんじゃん
テキストボックスに入力した内容なんかが全部のタブで同じになっちゃうじゃん
それじゃ使えないじゃん

670 :デフォルトの名無しさん:2009/11/24(火) 13:57:39
ListViewのGridLines="True"ってどこにかきこめばいいのでしょうか?
XAML初心者17才女子高生です

671 :デフォルトの名無しさん:2009/11/24(火) 14:09:14
16才以上は女じゃないのでいりません

普通に
<ListView GridLines="true" ... >
でいいと思うけど。

672 :デフォルトの名無しさん:2009/11/24(火) 14:14:45
ありがとう>>671さん

Expression Blend3だと

メンバー"GridLines"が認識されないか、アクセスできません。

とでます

673 :デフォルトの名無しさん:2009/11/24(火) 14:51:17
GridLinesなんてプロパティは存在しないからな
セルって意識があんまりないGridViewじゃ無理じゃないかなぁ

674 :デフォルトの名無しさん:2009/11/24(火) 16:32:48
何か激しく間違っているかもしれないが、以下のようにするととりあえずグリッドラインっぽいものを表示することが可能。
<!--Resource-->
<Style x:Key="MyItemContainerStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>

<!--ListView-->
<ListView Name="lv" ItemsSource="{Binding}" ItemContainerStyle="{DynamicResource MyItemContainerStyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="col1">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border BorderBrush="#FF000000" BorderThickness="1,0,1,1" Margin="-6,0,-6,0">
<StackPanel>
<TextBlock Text="{Binding col1}"/>
</StackPanel>
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

675 :デフォルトの名無しさん:2009/11/25(水) 11:15:57
WPFのチャンピオンベルト奪取するよ(´・ω・`)

676 :デフォルトの名無しさん:2009/11/26(木) 00:35:55
>>669
DataTemplateの制約だろうね。
タブ付きMDIの代わりはまだ自作するしかない。


677 :デフォルトの名無しさん:2009/11/27(金) 13:54:08
XAMLプログラミングって絶版なのかな
売ってないね

678 :デフォルトの名無しさん:2009/11/27(金) 14:24:39
WPFってGUIの部分だけなの?本体のコードはC#で書かないとだめなの?

679 :デフォルトの名無しさん:2009/11/27(金) 14:28:18
やらせる内容による
でもエスパー発動するとC#で書かないとだめ

680 :デフォルトの名無しさん:2009/11/27(金) 14:34:49
アニメーションするかどうかをユーザーが決められるようにする場合、
アニメーション定義はXAMLかコードどっちがいいですか?
というかXAMLでできるのかな・・・

681 :デフォルトの名無しさん:2009/11/27(金) 14:44:24
>>677
あの本いまさら価値無いと思うけど

682 :デフォルトの名無しさん:2009/11/27(金) 14:53:27
今ならどの本がいいの?
エッセンシャル WPF?

683 :デフォルトの名無しさん:2009/11/27(金) 15:24:46
エッセンシャルも3.0時代のだし少し古いね
翻訳がおかしいのか説明不足なのか、内容がいまひとつわかりにくいし
他の書籍はわからん

684 :デフォルトの名無しさん:2009/11/27(金) 21:26:03
WPFで開発した画面のサイズより小さな解像度のディスプレイで
画面を描画すると、そのディスプレイの画面サイズに
自動調整されてしまい、画面の見た目が切れてしまうの
ですが、これを回避する方法はどうすればよいのでしょうか?


685 :デフォルトの名無しさん:2009/11/27(金) 22:08:39
知らんがな
画面に収まらないものはどうしようもないだろ
折り返すなり省略するなり縮小するなり好きにしろ
使い方の問題であって一般にどうこう言えるような問題じゃない

686 :デフォルトの名無しさん:2009/11/28(土) 00:36:42
あるサイズ以下はサポートを打ち切るってのも手ではあるな。


687 :デフォルトの名無しさん:2009/11/28(土) 00:42:28
良ければちょっと画面キャプチャあげてみ

688 :デフォルトの名無しさん:2009/11/28(土) 01:14:55
そういうのをセンス悪いっていうね

689 :デフォルトの名無しさん:2009/11/28(土) 03:11:19
スクリーンサイズより大きなウィンドを表示したいって言ってるんだよね?
考えれ。

690 :デフォルトの名無しさん:2009/11/28(土) 03:25:41
まぁ常識的に考えてパネル内にスクロールバー付けて表示だな

691 :デフォルトの名無しさん:2009/11/28(土) 22:10:59
マイコミジャーナル
http://journal.mycom.co.jp/articles/2009/09/01/3ddigitalclockforwpf/

692 :デフォルトの名無しさん:2009/11/29(日) 12:30:39
Blend使うと何ができるの?

693 :デフォルトの名無しさん:2009/11/29(日) 14:27:45
デザインが簡単になったりコントロール作ったりするのが楽になったりする
んじゃなかったっけ?

694 :デフォルトの名無しさん:2009/11/29(日) 14:36:38
VSのXAMLエディタと比べると、「テンプレートの編集」で
コントロールを解体して中身が覗けるのが一番大きい違いだなあと使ってて思う

695 :デフォルトの名無しさん:2009/11/29(日) 15:36:53
ContentPresenterてなんだよ必要なのかよお〜

696 :デフォルトの名無しさん:2009/11/29(日) 18:02:58
XAMLって無駄に覚えること増やしてるよね
そんなの裏でやっちゃえよ、っていいたくなるのがたくさんある

697 :デフォルトの名無しさん:2009/11/29(日) 18:35:08
テンプレート編集とか見るXAML大きすぎてキモイよなw
細部まで手入れできるって点では進化なんだろうけど。

単純に形にするという点では難しい。

とりあえずUIとかのスタイルを、荒い粒度でいいから、
ボタン一発とかで切り替わって、ある程度のデザインの品質になってくれれば
良いなぁとも思う。


698 :デフォルトの名無しさん:2009/11/29(日) 18:49:20
カスタム自由度が高いのは悪いとことじゃない
ただ今のIDEの性能が低すぎて事実上Formより退化してる
Ver.3からマトモになるジンクスの崩壊とも言うな
4.0は話聞く限りはやっと使い物になりそうだが果たして

699 :デフォルトの名無しさん:2009/11/29(日) 19:00:48
普通にVSで作ったプログラムのGUI部分を、WPFを使った物に変更できるもんなの?
それともそんなツールとか用意されているの?

700 :デフォルトの名無しさん:2009/11/29(日) 19:01:52
>Ver.3からマトモになるジンクスの崩壊とも言うな
>4.0は話聞く限りはやっと使い物になりそうだが果たして

WPFもXAMLも.NET 3.0で登場して3.5でさらに改良されたわけで
期待するなら4.0で合っているんでは?


701 :デフォルトの名無しさん:2009/11/29(日) 19:11:25
WinFormsからマイグレーションするようなツールは今のところないんで無いかな。
ぜんぜん別物なんでその必要が無いのだと思うけど。


702 :デフォルトの名無しさん:2009/11/29(日) 19:22:57
WinFormsとWPFを両方使うことは可能なの?
ある部分だけWPFを使って、その他は従来通りみたいな。

703 :デフォルトの名無しさん:2009/11/29(日) 19:30:27
両方向に相互運用可能だよ、一応
デザイナとかがどこまで対応してるかは知らないけど

704 :デフォルトの名無しさん:2009/11/29(日) 19:32:45
>>702
できる。その逆もしかり。

現状あえてWPF使わなきゃいけない事情がないから
そんなことしたことないけど。

WPF使ってるときに必要なカスタムコントロールが無いから
Formsのを使う、ってことはこれから先ありそうだけど。

705 :デフォルトの名無しさん:2009/11/29(日) 19:50:56
そうですか。
次の仕事のGUIをどうしようか調査していたんですが、
まあ先を見越してWPFをメインにして、ない部分はFormsを使うようにしたいと思います。

706 :デフォルトの名無しさん:2009/11/29(日) 19:51:21
WPF on WForm on WPFはだめらしい(´・ω・`)ショボーン
WForm on WPF on WFormもだめらしいマタ(´・ω・`)ショボーン

707 :デフォルトの名無しさん:2009/11/29(日) 21:00:22
まるでわからんぞな、もし

ユーザーコントロールで使ってるtextBlockの内容を
そのユーザーコントロール使ってるWindowからいぢるにはどうしたらいいぞね?

708 :デフォルトの名無しさん:2009/11/29(日) 21:08:45
Nameが付けてあればuserControl1.textBlock1のようにしてアクセスできるはずだけどそれが許されるのはVB厨だけ
ユーザーコントロールにプロパティを定義するのが正しい

709 :デフォルトの名無しさん:2009/11/29(日) 21:30:22
やっぱりわからんぞな;;
あきらめるぞな;;

710 :デフォルトの名無しさん:2009/11/29(日) 21:48:20
VB最強だな(´・ω・`)

711 :デフォルトの名無しさん:2009/11/29(日) 21:48:35
UserControlに依存関係プロパティを付けてそれ経由でアクセスするのは
WPFの基礎テクニックだと思うのでこれを機にしっかり勉強した方がいい
Visual StudioでUserControl.xaml.csを開いて「propdp」と入力して2回Tabを押すと簡単

正直、依存関係プロパティとINotifyPropertyChangedは
書く量が多い割に内容はコピペなのでもうちょっとシンプルに書かせて欲しい気もする

712 :デフォルトの名無しさん:2009/11/29(日) 21:53:45
だなぁ。自動実装プロパティ並のシンタクスシュガーはあっても良いんじゃないかと思うんだよなぁ。

713 :デフォルトの名無しさん:2009/11/29(日) 23:15:25
あるスレッドでdoubleの値を不定期に変更してそれをTextBlockで観測したいんだがなにやればいいんだ?

714 :デフォルトの名無しさん:2009/11/29(日) 23:16:36
INotifyPropertyChangedあたりはVSの機能で、
Excelライクな表に入力すれば生成されるとかでいいよもう。

715 :デフォルトの名無しさん:2009/11/29(日) 23:34:19
できた

UpdateSourceTrigger=PropertyChanged

しるか、ボケ
Binding入れた時点で自動で用意してくれ

716 :デフォルトの名無しさん:2009/11/29(日) 23:54:10
Expression Blend 3 から VisualStudioよびだしてそちらでxamlに変更したら
その変更がExpression Blend3に反映されなかった
これはバグでしょうか?

717 :デフォルトの名無しさん:2009/11/30(月) 08:24:51
Visual Stadio側で変更ファイルを保存したか?

718 :デフォルトの名無しさん:2009/11/30(月) 08:31:11
もちろんした

719 :デフォルトの名無しさん:2009/11/30(月) 09:09:46
新規プロジェクトでWPFアプリを選ぶと、最初にWindow1とAppのファイルが自動で出来るのですが、どう使い分けるのでしょうか?
コールバック関数などはWindow1の方に記述されるようですが。

720 :デフォルトの名無しさん:2009/11/30(月) 14:17:15
依存関係プロパティ作ってみてそれに値を代入しようとすると
作ったスレッド以外ではだめと言われエラー終了してしまいます
なぜでしょう?
INotifyPropertyChangeだとエラーにならないんですけど
依存関係プロパティはINotifyPropertyChangeに比べどういうメリットがありますか?

721 :デフォルトの名無しさん:2009/11/30(月) 15:32:27
バインディングのターゲットにできるのが一番の特徴かな
あとはCoerceが簡単にできる
添付プロパティもあるけどこれはかなり別件だな

ざっくり言えば
XAMLでインスタンス作るようなのはDependencyObject(やFrameworkElement)で
コードでインスタンス作るようなのはINotifyPropertyChangedで
ぐらいの感じ?

722 :デフォルトの名無しさん:2009/11/30(月) 20:22:32
あえてWPFでドット絵ゲー作る事に明確なメリット・デメリットがあれば御教授お願いします。

723 :デフォルトの名無しさん:2009/11/30(月) 21:23:09
ゲームなら,複雑なUI使わないんだったら特にメリットがないんだよなあ
Direct3DやXNAと比べて手間もそんなに変わらないと思う
どうせならSilverlight使ったら?

724 :デフォルトの名無しさん:2009/11/30(月) 21:43:15
XNAはWin上で動かす場合でもXBOX360のコントローラしか使えないって時点でなんかちょっとね。
Silverlight は結構真面目にアリだと思う。WPFで書くよりそっちの方が未来がありそうだ。どうせ似てるし。

725 :デフォルトの名無しさん:2009/11/30(月) 21:45:08
Silverspriteなんて無理やり感漂うものもあるけどな
でも結構動いてくれて使える奴です

726 :デフォルトの名無しさん:2009/11/30(月) 22:40:43
>>724
>XNAはWin上で動かす場合でもXBOX360のコントローラしか使えないって時点でなんかちょっとね。

XNAで初めて.NETに触った人は、ここにすごい拒否反応を示す人が多いみたいね。
でも実際はWin版のXNAって何か厳しいサンドボックスがあるわけじゃないので、
単にjoyGetPosをDllImportすれば済む問題だったりする。
ttp://msdn.microsoft.com/ja-jp/library/cc410473.aspx

元々.NETでデスクトップアプリを作っていた人は
「XBOX360のコントローラしか使えない」なんて思っていないんじゃないかな。
>>724はXNAで.NET始めたの?

727 :デフォルトの名無しさん:2009/11/30(月) 22:48:31
ゲ開のXNAスレがゲハに荒らされてるのを見るからに、XBOX360という文字に拒否反応を起こして思考停止してる人たちがXNAを使えないものと言いたがっている

728 :デフォルトの名無しさん:2009/11/30(月) 23:01:52
>>726
フレームワークで用意されてる入力読取が使えないってのってなんか気持ちわるくない?
なんで DirectInput をそのまま使えるようにしなかったのかがよくわからんのよねぇ。

>>727
あそこは既にXNAの技術的な話が出来る場所じゃなくなってるからなぁ・・・


729 :デフォルトの名無しさん:2009/11/30(月) 23:08:38
>>728
>フレームワークで用意されてる入力読取が使えないってのってなんか気持ちわるくない?
>なんで DirectInput をそのまま使えるようにしなかったのかがよくわからんのよねぇ。

その程度は笑って対処できないとデスクトップアプリではやっていけないよ。
WinFormのころからDllImportが必要になったことなんて山のようにあったじゃない。

このスレ的には、
「通知領域がWPFでサポートされていないのってなんか気持ちわるくない?」
「なんでSystem.Windows.Forms.NotifyIconをそのまま使えるようにしなかったのかがよくわからんのよねぇ。 」
てな感じかな。

730 :デフォルトの名無しさん:2009/11/30(月) 23:14:02
そういやなんで NotifyIcon をそのまま使えるようにしなかったんだろ?


731 :デフォルトの名無しさん:2009/11/30(月) 23:18:38
「Jumplist使ってくださいねv」

732 :デフォルトの名無しさん:2009/11/30(月) 23:21:14
Windows7時代には、通知領域より
ジャンプリストとオーバーレイアイコン使ってくださいってことじゃね?
MSN Messengerももう通知領域には常駐してないし

733 :デフォルトの名無しさん:2009/11/30(月) 23:22:45
きっと現実の世界で甲が死んだことを受け入れられない人の心を読めるヒロインが引きこもりになって常夏の仮想世界を作ってですね・・・

734 :デフォルトの名無しさん:2009/11/30(月) 23:23:45
XNA 使うより SlimDX 使った方が正直色々面倒が無いと思うんだけどな。
箱◯でも動かしたいなら XNA 一択だけど。

735 :デフォルトの名無しさん:2009/12/01(火) 00:00:22
MSとしては、
ハードに対するイニシアチブを握っておきたいが、
かといって自分で生産するようなリスクは避けたい立場。

特にPCは規格がオープンだからみんな参入可能なためリスキー。
ゲーム機はクローズドだから自分で作ったんだろう。

XNAのコントローラの問題は、ハードはこうあるべきだ、
という主張ないし囲い込み戦略の一端では。


736 :デフォルトの名無しさん:2009/12/01(火) 07:16:03
SlimDXは安定度どうなのよ

737 :デフォルトの名無しさん:2009/12/01(火) 07:40:33
いいかげんスレチじゃね?
どこかに誘導してやってよ

738 :デフォルトの名無しさん:2009/12/01(火) 07:59:48
【Xbox 360】 XNA Game Studio その10 【C#】
http://pc11.2ch.net/test/read.cgi/gamedev/1254356087/

【C#】 Managed DirectX 【.NET】
http://pc11.2ch.net/test/read.cgi/gamedev/1195136419/

C# C# C♯でゲームを作ろう Part1
http://pc12.2ch.net/test/read.cgi/tech/1212972014/

739 :デフォルトの名無しさん:2009/12/01(火) 09:27:59
http://www.japf.fr/silverlight/mvvm/index.html

740 :738:2009/12/01(火) 09:41:16
訂正
C# C# C♯でゲームを作ろう Part1
× http://pc12.2ch.net/test/read.cgi/tech/1212972014/
○ http://pc11.2ch.net/test/read.cgi/gamedev/1212989813/

741 :デフォルトの名無しさん:2009/12/01(火) 13:03:27
Canvas上でMouseMoveをつかまえたいんですけど
Canvas上のControlの上(ボタンとかラベルとか)でしか
MouseMoveイベントが発生して無いようなんですけど
こういう仕様じゃないですよね?
WPFはじめたんですけどどうもFormの頭を引きずってしまっていて・・・w

742 :デフォルトの名無しさん:2009/12/01(火) 20:35:21
WPF ToolkitのDataGridで行番号を表示させるにはどうすればいいでしょう?

743 :デフォルトの名無しさん:2009/12/02(水) 03:32:35
コマンドの作り方が分からない
ICommand, RoutedCommand, CommandBinding, CommandBindings, 定義済みのコマンド…
キーワードが多くてどこから手を付ければいいのか頭の中がグチャグチャになる


744 :デフォルトの名無しさん:2009/12/02(水) 06:19:07
そこまでMSの流儀につきあわんでもよいとおもうがなぁ。
MSは結構やっちゃった的な実装してるのもあるし。INotifyPropertyChangedの実装とか最悪だろ。

745 :デフォルトの名無しさん:2009/12/02(水) 06:44:48
>744
そうか?
実装が面倒なのは否めないが、リフレクション等黒魔術系のテクニックを駆使して
コード量を減らすという方向よりは、素直かつ汎用性があって納得のいく解だと
思ったんだけど。どんな実装が良かったと思ってる?

746 :デフォルトの名無しさん:2009/12/02(水) 07:36:59
>>743
基本はICommand。
その上で動いているのがRoutedCommand。

747 :デフォルトの名無しさん:2009/12/02(水) 08:43:57
INotifyPropertyChanged はもう言語に手を加えてもっと簡単に利用出来るようにすりゃいいのにって
ときどき思う

748 :デフォルトの名無しさん:2009/12/02(水) 08:57:43
なんかよう分からんけど、xamlのコードビハインドにイベントハンドラを書くのは
良くないっぽいことらしいので、CAL真似してDelegateCommand<T>使ってる。

749 :デフォルトの名無しさん:2009/12/02(水) 09:09:29
ObservableCollectionでどの要素が削除されたかって知る方法ありますか?

750 :デフォルトの名無しさん:2009/12/02(水) 09:46:55
CollectionChangedイベントで取れるけど
質問に背景がありそうだな

751 :デフォルトの名無しさん:2009/12/02(水) 10:11:09
>745
手動でプロパティ名を文字列で使って同じようなコード延々と書かなきゃいけない時点でだめかと。
言語的なサポート、もしくはヘルパー的なクラス、通知をサポートするスマートオブジェクトでもかまわんのだが。

752 :デフォルトの名無しさん:2009/12/02(水) 11:23:16
んなものスニペット使え

753 :デフォルトの名無しさん:2009/12/02(水) 12:24:03
スニペット使えって結局コピペで済ませってこととほぼ同意でしょ。
書いててなんか洗練されてないなあとは思うわ。

カスタム属性あたり使ってシンプルに使えないものかと思ってるんだけど
なかなかうまくまとまらない。


754 :デフォルトの名無しさん:2009/12/02(水) 12:39:54
>>750
ありがとうございました
他のことで解決したです
背景は内緒(はずかしい)

755 :デフォルトの名無しさん:2009/12/02(水) 15:13:37
>>744
てことは、Button1_Clickにベタベタと処理を書いていく
VB的な(?)書き方もアリってことですかね?

でもまあ、それはMVVM的に美しくないし
ボタンからでもメニューからでもキー入力からでも
統一された方法で処理が呼べるってのは便利そうなのでもうちょっと頑張って勉強してみようと思います

756 :デフォルトの名無しさん:2009/12/02(水) 15:33:11
>>755
ボタンでしかしない処理ならそこに書けばいいし
共通して使うのであれば どっかにまとめちゃう

ただそれだけのような気がする・・・

757 :デフォルトの名無しさん:2009/12/02(水) 18:55:35
>>741
CanvasのBackgroundを透明以外に設定してみて

758 :デフォルトの名無しさん:2009/12/02(水) 20:52:47
>>742
行番号の列を追加すればいいだけなのでは?

759 :デフォルトの名無しさん:2009/12/02(水) 21:00:13
>>758
やっぱりそれしかないですか
ランキング表示(リアルタイムに変動)をさせようとしてて行番号が自動でつくと楽だなぁとおもったもんで


760 :デフォルトの名無しさん:2009/12/02(水) 21:47:15
StyleとTemplateの違いがよくわからない

761 :デフォルトの名無しさん:2009/12/02(水) 22:26:52
テンプレートというのはコントロールの外観を定義する実装の詳細なんだよ。
WPFのコントロールはそれ自身は外観というものを持ってなくて,たとえばボタンなら
クリックされたらイベントを発生させる」という機能と,ボタンを意味付けるコンテンツ(文字列でも画像でも何でもいいんだけど)
を持った抽象的な存在。具体的にそのボタンやコンテンツがどのようにして画面に表示されるかはテンプレートで定義される。
スタイルは単にコントロールのプロパティ設定をまとめたもの。

762 :デフォルトの名無しさん:2009/12/02(水) 23:01:56
その違いを明確にしたくてわざわざSetterつくったのか
エッセンシャルWPFみたらStyleでSetter使わない記述も検討してたらしいけど
ていうかよく見るとそう書いてるな、この本にも

763 :デフォルトの名無しさん:2009/12/02(水) 23:02:24
ぶっちゃけ、みんなwpf使ってるの?
いつも今回こそはとwpfプロジェクト選んで挑戦するんだけど、GUIをなんとか
するので手間ばっかりかかって、結局はformで作り直すことが多い。
もちろん、まだ自分自身が不慣れって言うのもあるんだろうけれど、よほど凝った
概観、たとえば従来ならownerdrawでなんとかしよう、みたいな例外的なケース
でもないかぎり、まったくメリットが見出せないんだが…。全般的にアーキテクチャは
すっきりしているはずなんだけれど、使おうとするとひどくわかりにくいという、非常に
ちぐはぐな印象がある。



764 :デフォルトの名無しさん:2009/12/02(水) 23:06:46
ぶっちゃけ使ってないなぁ。
勉強のためにちょこちょこ小さいプログラム書き捨てしてるぐらいだわ。




765 :デフォルトの名無しさん:2009/12/02(水) 23:08:03
俺も横目で見ている感じだな。勉強はしているけど。

766 :デフォルトの名無しさん:2009/12/02(水) 23:41:11
面白い事が出来るのはわかってるけど正直つかいにくいです

767 :デフォルトの名無しさん:2009/12/03(木) 00:01:40
WPF使ったVisual Studio2010が悲惨な出来だからなあ

768 :デフォルトの名無しさん:2009/12/03(木) 00:06:25
PCがしょぼいだけなんじゃないの?

769 :デフォルトの名無しさん:2009/12/03(木) 00:09:18
>>767
全然悲惨じゃないけど?

770 :デフォルトの名無しさん:2009/12/03(木) 00:19:24
ウィンドウ内に画像をたくさん張り付けるときは明らかに速いね
拡大縮小が絡むとさらに

771 :デフォルトの名無しさん:2009/12/03(木) 00:34:22
VS2010は想像してたより全然使えそうなレベルで正直びっくりした

772 :デフォルトの名無しさん:2009/12/03(木) 00:43:52
デジャブかな?
この流れ、何か見たことあるぞ…

773 :デフォルトの名無しさん:2009/12/03(木) 01:29:31
WPFはVS2010出てからでしょ
WinForms並みの生産性があればいいけどね。
正直、今の状況は手を出しにくい。

774 :デフォルトの名無しさん:2009/12/03(木) 01:53:17
WinForms並みの生産性っていうけれど、
WinFormsのRAD全開のアプリってめちゃめちゃ保守性悪くないか?


775 :デフォルトの名無しさん:2009/12/03(木) 02:02:06
保守性は全く悪くないです

776 :デフォルトの名無しさん:2009/12/03(木) 02:07:17
ポトペタで作ってたら保守性悪いだろうね。

777 :デフォルトの名無しさん:2009/12/03(木) 02:08:25
VSで作ってる人と、Blendで作ってる人で
生産性の感じ方に違いがあるような気がする

778 :デフォルトの名無しさん:2009/12/03(木) 02:12:51
サンプルプログラムがネット上で容易に手に入るようになったから、それを元にして作ることは出来るんだけど、
いざ全くゼロから作ろうとすると、全然出来ないことに気づくんだよな(´・ω・`)

779 :デフォルトの名無しさん:2009/12/03(木) 02:18:20
0から大きな物作るのは大変だよね
俺も3年目にしてやっと一人で100万ステップ以上のソフトを設計実装できるようになったよ…

780 :デフォルトの名無しさん:2009/12/03(木) 02:20:39
>>776
それ逆
ポトペタで再利用出来るように作らない人程保守性は悪い

781 :デフォルトの名無しさん:2009/12/03(木) 02:27:25
>>780
再利用性を高くするためにコンポーネントの粒度を小さくすると
今度はポトペタそのものが大変になって、結局
「UI構築用の専用言語くれよ!」になっちゃう。なんだかんだでXAMLは使いやすいよ。


782 :デフォルトの名無しさん:2009/12/03(木) 02:36:38
正直使いにくいです…
まるで.net出たての頃のようです
著名人のブログみても使いこなせねぇという言葉しか見えない…

783 :デフォルトの名無しさん:2009/12/03(木) 02:45:46
XPでWPFアプリのフォントが汚いのはどうにかして欲しい

784 :デフォルトの名無しさん:2009/12/03(木) 02:49:12
HTMLメモ帳で書くような人種にはXAML使いよく見えるかも知れんが
大抵のプログラマはインテリセンスもロクに効かないような言語に用はない
既存コントロールの貧相さを自由度とかいって誤魔化すなと
次の4.0でそこらが解消できなきゃマジオワタ

785 :デフォルトの名無しさん:2009/12/03(木) 02:53:09
Blendだとインテリセンス効いたりするんだろか。
VSEEしかもってない貧乏人だからなあ。体験版さわってみるかなぁ

786 :デフォルトの名無しさん:2009/12/03(木) 03:08:18
うにょうにょ動いて凄いなとかバインドって便利だなとまでは思うのだけれど、
こんなコントロールどうやって作るのって所で俺、終了w

787 :デフォルトの名無しさん:2009/12/03(木) 07:19:58
WPF、XAMLの質問だと回答ないことも多いのに
使えない、って話になると盛り上がるのな、このスレ

788 :デフォルトの名無しさん:2009/12/03(木) 07:32:34
見た目キャッチーなのに、仕様が初心者キラーだからねえ

789 :デフォルトの名無しさん:2009/12/03(木) 08:59:21
だねぇ。
WPFプログラミング(XAMLプログラミング)ものすごくしんどい。

790 :デフォルトの名無しさん:2009/12/03(木) 10:00:17
最近ようやっとXAMLの嬉しさが理解できてきた。

791 :デフォルトの名無しさん:2009/12/03(木) 10:52:28
なんだかんだいって結局難しいの一言に尽きるような

792 :デフォルトの名無しさん:2009/12/03(木) 11:29:54
工数増えるのもなんかいやだ
winapi使ってゴリゴリ書いてる時を思い出す

793 :デフォルトの名無しさん:2009/12/03(木) 15:30:10
ロジックの分離ってのがなんか体感しづらい
XAMLはハードコーディングでやってくのは楽だけどそこから脱却しようとしたら
バインディングだのコマンドだのでわけわからんっす。

794 :デフォルトの名無しさん:2009/12/03(木) 15:46:20
ノートPCでSynapticsのタッチパッド使ってると
全てのWPFアプリの全てのScrollViewer(を含むListBox, ListView, FlowDocument…)で
タッチパッド隅を使ったスクロールが効かない
外付けマウスのホイールだと全く問題ないんだけど

VS2010だとスクロールできるからWPF4.0じゃ改善されてんのかな?


795 :デフォルトの名無しさん:2009/12/04(金) 04:08:36
ある程度単純なものは良いんだが、TabControlの実装とか見ると萎える
見た目を整えるのにそれを実現する構成を考えるのが難しく感じるな

796 :デフォルトの名無しさん:2009/12/04(金) 08:13:50
>795
実装みてないんだが、全部XAMLでやろうとしてるって事?
手続き型で書くところを宣言的に書こうとしてる故の無理加減?

797 :デフォルトの名無しさん:2009/12/04(金) 09:57:39
WPF toolkitのChartの凡例を非表示にするにはどうしたらいいんでしょ?

798 :デフォルトの名無しさん:2009/12/04(金) 11:00:53
できた

<charting:Chart.LegendStyle>
  <Style TargetType="datavis:Legend">
  <Setter Property="Width" Value="0"/>
  <Setter Property="Height" Value="0"/>
 </Style>
</charting:Chart.LegendStyle>


799 :デフォルトの名無しさん:2009/12/04(金) 12:57:18
WPFで点を打つのはどうやればいい?

800 :デフォルトの名無しさん:2009/12/04(金) 13:03:42
点はベクタ的には幅高さが0だから見えない
代わりに1x1のRectangleでも置けば

801 :デフォルトの名無しさん:2009/12/04(金) 14:21:56
Silverlightの名前をWPF/Eに戻してくれないかなあ
ググるのに二度手間

802 :デフォルトの名無しさん:2009/12/04(金) 14:39:59
出てくる情報がまぎらわしくなるだけだろ

803 :デフォルトの名無しさん:2009/12/04(金) 15:12:04
WPFの情報少ないからSilverlight参考にしてますが何か問題でも?

804 :デフォルトの名無しさん:2009/12/04(金) 15:38:45
いっそ全部Silverlightで・・・

805 :デフォルトの名無しさん:2009/12/04(金) 16:38:56
ttp://msdn.microsoft.com/ja-jp/library/aa969768.aspx
ここ読んでも論理フォーカスがさっぱり理解できないんだけど、
どういうもんなんですかこれ?

806 :デフォルトの名無しさん:2009/12/04(金) 16:47:12
左右をパネルで分割したとする それぞれいくつかテキストボックスなどを含む
でこの左右のパネルをそれぞれフォーカスのスコープを持たせた
左のパネルの上から三つ目のテキストボックスにフォーカスがあった
でそこから右のパネルの適当なテキストボックスにフォーカスを移動させた
その後右のパネルから左のパネルにフォーカスが移ってきたとき
左のパネルの論理フォーカスは上から三つ目のテキストボックスに残っているので
このテキストボックスにフォーカスが当たる

とこんな感じ

807 :デフォルトの名無しさん:2009/12/04(金) 17:03:19
日本語で頼む

808 :デフォルトの名無しさん:2009/12/04(金) 17:05:59
左右を羽目板で分割したとする それぞれいくつかの文書入力箱などを含む

飽きた

809 :デフォルトの名無しさん:2009/12/04(金) 17:07:19
>>806
なるほど。
>キーボード フォーカスを持つ要素は論理フォーカスも持ちますが、
>論理フォーカスを持つ要素は必ずしもキーボード フォーカスを持ちません。
これは論理フォーカスを持っててもキーボードフォーカスを今持ってるとは限らんよ。ってことで、
キーボードフォーカスを持てない要素でも論理フォーカスを持ってることもあるよ。
ってことじゃないんですね。

810 :デフォルトの名無しさん:2009/12/04(金) 17:20:11
ゲシュタルト崩壊させる気かw

811 :デフォルトの名無しさん:2009/12/05(土) 00:22:38
>>806
説明うまいな

812 :デフォルトの名無しさん:2009/12/05(土) 01:00:06
「Expression Blend Preview for .NET 4」って
Blend3のSPなのか?Blend4なのか?
http://blogs.msdn.com/expression/

そりゃMSDNサブスクリプションの人はいいけどさ…
こうポンポンバージョンアップされるとホビープログラマにはきつい

813 :デフォルトの名無しさん:2009/12/05(土) 02:13:00
>>812
Blend3だろ。でてそんなに経ってないし

814 :デフォルトの名無しさん:2009/12/05(土) 08:29:26
>>811
エェー
>でこの左右のパネルをそれぞれフォーカスのスコープを持たせた
何を言ってるのか全然解らないんですけど


815 :デフォルトの名無しさん:2009/12/05(土) 10:49:39
>>813
http://pc12.2ch.net/test/read.cgi/tech/1244812356/988

816 :デフォルトの名無しさん:2009/12/05(土) 20:31:38
Silverlightのほうが盛り上がってる

817 :デフォルトの名無しさん:2009/12/06(日) 01:37:18
VSTO で取得したオブジェクトを Binding すると Outlook が終了しないね。
WPF のバグなんだろか。VS2010 で直ることを祈る。

818 :デフォルトの名無しさん:2009/12/06(日) 02:09:35
メモリリークしてんじゃね?WPF関係ない気がする。

819 :デフォルトの名無しさん:2009/12/06(日) 02:12:42
これじゃないかと
ttp://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/eea6b862-e0fd-4cfb-a5d1-5be7c01ffa43


820 :817:2009/12/07(月) 00:04:49
>>818
メモリリークってどの部分の?
DataContext に代入する1行をコメントアウトすると、outlook が終了するんだよ。
だから、Wpf 内部の Binding の処理を行ってる部分が間接参照を作ってて
そこを解放してないんじゃないかと予想してるんだが・・・。
まぁ、外れてるかも。

>>819
すまん、それ長くてどこがポイントかよくわからない。
質問者も質問して返事がないので、解決したのかどうかもわからんし。
Quit() はしてるし、プログラム内で参照してる部分に null を代入して
GC.Collect() もやってみた。でも、終了しないんだよなぁ。

821 :デフォルトの名無しさん:2009/12/07(月) 00:08:25
ReleaseComObject()

822 :デフォルトの名無しさん:2009/12/07(月) 00:16:49
何をバインディングしてるか知らんけど、OfficeアプリのCOM参照って明示的に
開放してやらんとメモリリークするんじゃなかったっけ?
かつてC#でExcelのオートメーション使ったアプリ作ったとき、取得したCOMオブジェクト
(Sheetとか)を全部自前で開放してやらんとExcelのゴーストプロセスが残って
「なんじゃこの糞仕様は」と思った覚えが。

823 :デフォルトの名無しさん:2009/12/07(月) 00:33:47
説明書に「使用後はリセットボタンを押すこと」って書いてないか確認しる

824 :817:2009/12/07(月) 01:32:27
>>821
VSTO って ReleaseComObject しなくていいんじゃないの?
と思ってググってみると、
ttp://blogs.msdn.com/eric_carter/archive/2004/04/07/108898.aspx
> you typically don't ever have to use ReleaseCOMObject
って書いてあるな。英語だからよくわからんが、
Binding したら ReleaseCOMObject が必要になるのかな?
あとでちょっと試してみる。

>>822
それをいちいちしなくて良くするために VSTO があるらしいんだが・・・。
上のブログに "typically" ってあるのが気になる。暇なときにゆっくり読んでみる。

>>823
Office のマニュアルにも VS のマニュアルにもそんなことは書いてないみたいだ。
自作アプリのマニュアルにその一文を加えるかは検討してみる。

825 :デフォルトの名無しさん:2009/12/07(月) 02:05:41
> それをいちいちしなくて良くするために VSTO があるらしいんだが・・・。
ほんとう?

826 :デフォルトの名無しさん:2009/12/07(月) 09:43:36
Binding の Converter にパラメータを複数渡す方法ってある?

827 :デフォルトの名無しさん:2009/12/07(月) 13:14:26
Tuple

828 :デフォルトの名無しさん:2009/12/07(月) 14:40:58
MultiBindingとIMultiValueConverter

829 :デフォルトの名無しさん:2009/12/08(火) 01:55:45
ConverterParameterのことだろ

830 :デフォルトの名無しさん:2009/12/11(金) 02:49:04
WPFでいうメタデータってなんですか?

831 :デフォルトの名無しさん:2009/12/11(金) 02:58:43
色々あると思うが
どういう文脈の話よ

832 :デフォルトの名無しさん:2009/12/11(金) 13:21:45
VS2005ProとWinSDK環境なんだですけどWPFアプリプロジェクトのビルドはMSBUILDじゃないとダメですか?

833 :デフォルトの名無しさん:2009/12/11(金) 19:13:39
>>831
カスタムコントロールをVSで作ったときに、そのクラスの
静的コンストラクタ内にDefaultStyleKeyProperty.OverrideMetadata(...)
なんてのがあって、それについて調べてるんです。

834 :デフォルトの名無しさん:2009/12/12(土) 01:09:09
>>832
多分そう
xamlのコンパイルとかはmsbuildの担当っぽい

>>833
質問が漠然としてて要領を得ない
取り敢えずOverrideMetadataの引数に渡す型とそのメンバをMSDNで調べてみたら?
もちろんその派生クラスのもな

835 :デフォルトの名無しさん:2009/12/12(土) 13:21:00
FrameworkPropertyMetadataでぐぐれ。


836 :デフォルトの名無しさん:2009/12/12(土) 20:40:14
ttp://msdn.microsoft.com/ja-jp/library/ms771362%28VS.80%29.aspx
ここにあるサンプルをVS2008EEでビルドするとエラーになるんですが、原因と解決策を教えてもらえませんか?

エラー 1 ソース ファイル 'wpfcalculator\csharp\Properties\Resources.Designer.cs' を開くことができませんでした ('エラーを特定できません ')。 wpfcalculator2
エラー 2 ソース ファイル 'wpfcalculator\csharp\Properties\Settings.Designer.cs' を開くことができませんでした ('エラーを特定できません ')。 wpfcalculator2
警告 3 ファイル 'Properties\Resources.resx' を処理中に、カスタム ツール 'ResXFileCodeGenerator' が失敗しました。
警告 4 ファイル 'Properties\Settings.settings' を処理中に、カスタム ツール 'SettingsSingleFileGenerator' が失敗しました。

837 :デフォルトの名無しさん:2009/12/13(日) 04:36:29
プロジェクトがバグってるから作り直せ

デザイナで開いて保存すれば*.designer.csは作成されるけど、それが解決しても別のエラーが出るし

838 :デフォルトの名無しさん:2009/12/13(日) 09:44:08
>>837
レス、ありがとうございます。
プロジェクトを作り直してみます。

MS公式のサンプルなのになあ・・・

839 :デフォルトの名無しさん:2009/12/14(月) 17:30:35
公式サンプルはWinSDKのプロンプトでmsbuildのやつじゃないか?

840 :デフォルトの名無しさん:2009/12/14(月) 18:00:32
msbuildでも駄目だったぜ
まあ、MSDNのサンプルなんて「大体こんな感じ」というものだから

841 :デフォルトの名無しさん:2009/12/14(月) 19:46:50
wpfcalculator2.csprojが壊れているというか別物が入ってる。
AvalonCalculator2とか初期の開発コードが残ってるし、
バージョン管理に失敗して古いソースをかぶせてしまった感じ。
VS2008で新しくプロジェクトを作ったほうが早い。


842 :デフォルトの名無しさん:2009/12/14(月) 19:58:07
WPFアプリケーションをWPFCalculatorの名称で新規作成してそのまま保存して終了。
App,xaml
App.xaml.cs
Window1.xaml
Window1.xaml
を上書き。
mytextbox.cs
appicon,ico
をコピーして既存の項目の追加。
リソースは使ってないのでProperties\の下はそのままでいい。

以下はオプション。省略してもいい。
Properties\AssemblyInfo.csだけProperties\にコピー。
プロジェクトのプロパティで対象のフレームワークを3.0に設定。
アイコンとマニフェストでアイコンをappicon.icoに設定。


843 :836:2009/12/15(火) 10:56:01
>>842
詳しい情報ありがとうございます。
その通りにやってちゃんとビルドできました。

844 :デフォルトの名無しさん:2009/12/15(火) 17:12:56
マイクロソフトのGUIはこれからこれで行くらしい。ぐらいの知識でちょっと調べてみようと思うんだけど、
WPFアプリで帳票とかの印刷しようとするとどうすればいいか説明している本とかないでしょうか。

845 :デフォルトの名無しさん:2009/12/15(火) 17:40:49
>>844
オライリーかな。

846 :デフォルトの名無しさん:2009/12/15(火) 17:45:03
洋書はきっついなぁ
オライリーは早く和訳してくれないかな

847 :デフォルトの名無しさん:2009/12/15(火) 18:49:51
すいません。教えてください。
WPFにSystem.Windows.Forms.Screen.AllScreensのようなモニタ情報をすべて取得できるヤツってありますか?
SystemParametersにプライマリモニタの情報を取得できるところまでは調べたのですが、モニタ情報を一覧で取得する方法がわかりません・・・



848 :デフォルトの名無しさん:2009/12/15(火) 20:54:41
>>846
上カルビ一皿で3ページ訳してあげよう

849 :デフォルトの名無しさん:2009/12/15(火) 23:26:32
>>847
ないのでFormsを使ってるよ

850 :デフォルトの名無しさん:2009/12/16(水) 00:06:35
マルチモニタでどうなるのか知らないけど、WMIのWin32_DesktopMonitorとかは?

851 :デフォルトの名無しさん:2009/12/16(水) 00:35:48
WinFormsのアセンブリ参照を追加したほうが楽じゃん

852 :デフォルトの名無しさん:2009/12/16(水) 01:43:41
下でやってること同じ?だしな

853 :デフォルトの名無しさん:2009/12/16(水) 04:08:01
FlowDocumentの表現力が一見高いように見えて
実はむちゃくちゃレイアウトの自由度が低くて泣きそうになる
かといってInlineUIContainerでGridとかBorderとかTextBlockとか入れちゃうと
「範囲選択してテキストをコピー」できなくなるし…

854 :デフォルトの名無しさん:2009/12/16(水) 14:49:47
>>847 です。

>>849
>>851
おとなしくアセンブリ参照をいれてFormsを使います。
WPFのクラスでなにかあるのかなーと思いいろいろとサイトをあたって探してみましたが、
めんどくさくなった(ってか無いようですので)ので教えて頂いたようにFormsで取得するようにします。

プライマリ情報はSystemParametersってやつにもってるのになぁ・・・

855 :817:2009/12/16(水) 22:32:48
MVVM なアプリを作っています。
ViewModel の処理で時間がかかるため Dispatcher を使用したいのですが、
どうしたら使用すべき Dispatcher を取得できるでしょうか?

現在は App.Current.MainWindow.Dispatcher を使用してるんですが、
これだと、MainWindows 固定なんで汎用的な方法があれば知りたいなと
思いまして。

856 :デフォルトの名無しさん:2009/12/16(水) 22:37:35
そもそもVMに時間がかかる処理を記述してるのがおかしいのでは。
普通はありえないと思うんだけど。

857 :デフォルトの名無しさん:2009/12/16(水) 23:18:31
VMはAdapterみたいな処理しかしない筈だよね

858 :YSDYSO:2009/12/16(水) 23:46:41
Main(GUI)スレッドのDispatcherなら
 Application.Current.Dispatcher
現在のスレッドのなら
 Dispatcher.CurrentDispatcher.
どちらも静的なクラスメソッド


859 :855:2009/12/17(木) 00:03:29
>>858
ありがとう。
Application.Dispatcher = GUI のスレッドだったのか。

>>856
>>857
え?そうなの?
時間のかかる処理は、Model が持つべきなの?
Model ≒ データ(今作ってるアプリではシリアライズの対象となる部分)
View = UI
ViewModel = 上記以外の部分(データをごにょごにょするのはここ)
と割り振ってたんだけど、Model の認識が狭すぎた?

そうすると、
1.Model 内で時間のかかる処理を Thread 作って実行
2.処理終わったら ViewModel に通知
3.ViewModel 内で Dispatcher 使って Action 起動
4.その Action 内で OnPropertyChanged 使って View に通知
って処理する必要があるってこと?

よかったら後学のため教えてください。

860 :デフォルトの名無しさん:2009/12/17(木) 00:20:44
ぶっちゃけ入力画面ってBind使うとVとVMVにならね?
入力された蓄積されたデータ公開に対してはMVVMになるけどさ

861 :デフォルトの名無しさん:2009/12/17(木) 00:37:04
>>859
そう。


862 :デフォルトの名無しさん:2009/12/17(木) 01:05:04
>>859
ModelはフロントエンドのUIやスクリプト操作から独立したデータ操作単位でなくちゃ。
例えば、「発注」という操作は、それが時間がかかろうがどうだろうが、それを利用する
WPFのアプリからでも、SilverlightのWebアプリからでも、WebService経由でも
同じインタフェースで呼び出せる独立クラスにしましょ、という考え方ね。

863 :デフォルトの名無しさん:2009/12/17(木) 07:41:19
>>859
そういう流れか

WPF Line of Business – Introduction
This post is targeted to those that are new to MVVM or don’t have a full understanding of WPF LOB layers.
http://karlshifflett.wordpress.com/mvvm/wpf-line-of-business-introduction/

WPF Starter Ki
http://wpfstarterkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35301

上がMSのプログラムマネージャ、下がMSのコンサルね


864 :855:2009/12/17(木) 23:52:53
>>861
そうかぁ。最初はそういう認識でやってたんだけど、
ViewModel が、
 public object Value{
  get{ return _model.Value; }
  set{ _model.Value = value; }
 }
みたいな記述ばかりになってしまって、
「あれ、俺間違ってる?」
と思って 859 の割り振りにしたんだけど、
ViewModel ≒ Adopter のつもりでいいのね。

>>862
その考え方って汎用な Model と、固有の特性を持つ ViewModel、
両者をつなぐ Adopter として ViewModel って感じ?
でも、そういわれてみると、今作ってるプログラムは Windows プラットフォーム
にべったり依存してて、WPF でしか動かないから MVVM 化する意義が
ない気がしてきた。やばいぞ揺らいできた。

>>863
教えていただいて恐縮だが英語は苦手なので、
あとでゆっくり読む。

865 :855:2009/12/18(金) 00:16:48
連投スマソだが、なんで揺らいじゃうかというと、
V-VM 間は ICommand & Binding がそこそこ手間無しでうまくつなげられるんだが、
VM-M 間はめんどくさくね?

VM->M 方向は依存してていいだろうから、普通にメソッド呼び出しでOKだと思うけど、
M->VM 方向はやっぱイベント?イベントって、EventArgs のサブクラス作って、
delegate 宣言して、event 宣言してって結構面倒なのよね。
面倒でもこれが王道?これをやるべき?

手を抜くには、INotifyPropertyChanged を実装した Model にするとか、
イベント代わりに Action 使うとかできるかとは思うけど、
そうすると「汎用性ないのに、VM と M 分ける意味ある?」
って気がしてしまう。

それとも INotifyPropertyChanged を実装した Model は「割と普通」
だったりする?それとも俺が知らないだけで楽にイベント実装する方法が
あるの?
そのあたりがわかんね。

質問ばかりですみません。

866 :デフォルトの名無しさん:2009/12/18(金) 00:29:40
結局、依存関係プロパティの実装に終始するはめになるのが
VM-M 間の接続だと思ってる。

なんだか楽してんだか苦労してんだかわかんなくなる瞬間。

867 :855:2009/12/18(金) 00:39:06
ごめん、 863 の "WPF Line of Business ? Introduction" のモデルのとこだけ
あわてて読んでみた。Model も INotifyProperyChanged でいいんだ?
せっかく教えてくれたのに読むのあと回しにしてすまん。

おかげさまで、M-VM 間もそんなに手間と思わずに分割可能になりました。

残った疑問は、ViewModel ≒ Adopter だとすると、新規に作るプログラムで Model
を分離したとしても再利用できなさそうな場合に ViewModel と Model を分離する
意義があるか?ってことです。

Model を分離しておけば、WPF が廃れても次のUIに適合させやすいであろう
くらいは想像できますが、それ以外になにかありますか?

>>860 と同じ考え方になってます)

868 :デフォルトの名無しさん:2009/12/18(金) 00:47:06
個人的な意見というか勘だが、
いわゆるイベントで通知するときは、用途によって通知したい情報が異なるのだから
おそらくEventArgsあたりは、継承ではなくGenericsに似た方式が望ましいのだと思う。

VとVMは悩ましいが、VMあたりは言語表現よりはXAMLで記述する範囲がスッキリ収まると思う。


869 :デフォルトの名無しさん:2009/12/18(金) 01:58:26
こんなのを見つけた。特にModel=databaseをラップしたものと勘違いしてる人は多い気がする。
* Model (database)
- no, Model is the OO representation of your business entities, including the data that defines them.
to say 'database' gives the wrong impression. Database is just a repository to store relational data.

* Controller (business logic)
- no, Controller is the intermediary between your Model and your View. Controller is the manager
which determines what goes on in your website, but the business logic is the definition of
what the system is about.

* View (what you see + view logic)
- absolutely.

Model-Controller(ViewMode) で分離するのは使い回しよりもModelのユニットテストに重要だと思う。
小規模なものでテストに問題ないのであれば、コピペコードだらけにしてまで無理して分離せんでも
いいんじゃないかな。結局ソフトの品質を維持するための設計技法にすぎないのだから。

870 :デフォルトの名無しさん:2009/12/18(金) 02:10:01
結局のところ、Modelだけでアプリケーションのエンジンの部分は完結していなければならない、
ということだね。

871 :デフォルトの名無しさん:2009/12/18(金) 10:48:33
操作がともなってないただのラッパーみたいなモデル作っちゃうのをドメインモデル貧血症っていうんだそうな

ドメインモデル貧血症
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?AnemicDomainModel

でもあえてこれで行くって宣言してる人も結構いるんだよね
スケーラビリティのある設計なんてのは夢だと思っとけってことかねえ

872 :デフォルトの名無しさん:2009/12/18(金) 10:59:33
ドメインモデル貧血症はまたちょーっと違う意味のような気がしないでもない。

あと VM と M の分離は再利用目的っていより仕様の分離、テストのしやすさが目的だと思ったけど。


873 :デフォルトの名無しさん:2009/12/18(金) 11:11:21
「ビジネスロジックの状態管理」と「アプリケーションロジックの状態管理」が
ちゃんと整理されてなくてごっちゃになっていると、ロジック全部をModelかViewModelに
押し込んで、もう片方を単なるラッパにして形だけ繕っているようなものを作りがち。

アプリケーションロジックが、本質的にビジネスロジックのサービスを1個か2個呼ぶ
程度で済んでしまうことも結構あるから、そういうときは自信もってViewModelを
薄い層にすればいいんじゃない?

874 :デフォルトの名無しさん:2009/12/18(金) 12:51:10
設計に王道なし

875 :デフォルトの名無しさん:2009/12/18(金) 16:52:25
VMだけ管理すればいいようにするのがMVVMなの?

876 :デフォルトの名無しさん:2009/12/18(金) 17:24:48
MVVMは実際どうなんだろうね
RIA Servicesはn層アプリを2層アプリに近づけようとしている
そんな流れがくるんじゃないかと思ったりもする

877 :デフォルトの名無しさん:2009/12/18(金) 20:17:42
MVVMの定義や例が知りたいならググったサイトを熟読した方がいいような。
2chだとどうしても断片的な解説で終りがちだし。

878 :デフォルトの名無しさん:2009/12/18(金) 21:02:11
俺もRIA ServicesでMVVMをどうするかが気になっているんだけど。
まあ、VMは作ると思うけど。

879 :デフォルトの名無しさん:2009/12/18(金) 23:24:15
VSはDSL近辺で頑張ってもらいたいかな

880 :デフォルトの名無しさん:2009/12/18(金) 23:27:01
通常は平面でマウスホバーで膨らむボタンってどうやって作るの?
クラシックテーマのメニューみたいな感じ

881 :デフォルトの名無しさん:2009/12/18(金) 23:29:26
テンプレート書く

882 :デフォルトの名無しさん:2009/12/19(土) 11:56:39
ぶっちゃけIValueConverterを駆使すればVMいらない気がするけど。
まぁレイヤーを綺麗にする意味では良い。


883 :デフォルトの名無しさん:2009/12/19(土) 12:26:43
View周りの状態遷移などの管理はVMでやるしかないんじゃないか?

IValueConverterは値を変換できない場合の扱いが問題になる。
V-VM-Mで、Vの値を型変換してMにセットできない場合、VMはどちらの値に同期すべきか?
V-VMの同期ができないとVの値がVMの値に勝手に変わることが発生しうる(大抵それはうれしくないだろう)。
V-VMは常に同期し、VM-Mは同期は保証しないならこれは防げる。
しかし、IValueConverterで例外が発生しうるとV-VMの同期は保証できない。

884 :デフォルトの名無しさん:2009/12/19(土) 23:39:16
下記のコードで TreeViewItem の背景が Aqua にならない
理由だれか教えてください。

<TreeView>
  <TreeView.ItemTemplate>
    <DataTemplate>
      <StackPanel>
        <TextBlock Text="{Binding Header}" Background="Aqua"></TextBlock>
      </StackPanel>
    </DataTemplate>
  </TreeView.ItemTemplate>
  <TreeViewItem Header="Foo" IsExpanded="True">
    <TreeViewItem Header="Bar">
    </TreeViewItem>
    <TreeViewItem Header="Baz">
    </TreeViewItem>
  </TreeViewItem>
</TreeView>

885 :デフォルトの名無しさん:2009/12/19(土) 23:50:32
ItemTemplateはItemsSourceを使って自動的に作成されるTreeViewItemに対して適用されるテンプレート。
明示的に作ったTreeViewItemには関係ない。

886 :デフォルトの名無しさん:2009/12/20(日) 04:38:42
WMPのプレイビューのリストウィンドウ領域(曲名と再生時間の一覧が表示されてる奴)
みたいな感じ(の曲名が長い場合のパターン)っていえば分かりやすいでしょうか、
以下のようなListBoxItemを作りたいと思います。
・左詰で可変長の文字列を表示するTextBlock
・右詰で固定長の文字列を表示するTextBlock
・両方を表示しきれない場合、左のTextBlockの末尾を省略表示する

<DataTemplate>
  <Grid>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
      <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0" HorizontalAlignment="Left"
        Text="{Binding 可変長}" TextTrimming="CharacterEllipsis"/>
    <TextBlock Grid.Column="1" HorizontalAlignment="Right"
        Text="{Binding 固定長}"/>
  </Grid>
</DataTemplate>

幅固定ならこれで左側のTextBlockにWidthを設定すれば実現できるんですが、
WMPのと同様にGridSplitterでListBoxの幅を可変にしたいのです。
なにかうまい方法はないでしょうか?

887 :デフォルトの名無しさん:2009/12/20(日) 04:53:50
あ、ちなみにこれも書いてます
<ListBox.ItemContainerStyle>
  <Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
  </Style>
</ListBox.ItemContainerStyle>

888 :デフォルトの名無しさん:2009/12/21(月) 11:37:41
何が出来ないと言ってるのかよくわからない

http://msdn.microsoft.com/ja-jp/bb546954.aspx

889 :デフォルトの名無しさん:2009/12/21(月) 11:51:08
左側のTextBlockと右側のTextBlockの幅の合計がListBoxの幅を超えたとき、
ListBoxに横スクロールバーが出てしまうんですよ。
そして右側TextBlockがスクロール先にはみ出てしまう。

そうじゃなくて、幅合計がListBoxを超えたとき
左側TextBlockを末尾省略(TextTrimming="CharacterEllipsis")して
ListBoxの横スクロールバーは出さないようにしたいんです。

890 :デフォルトの名無しさん:2009/12/21(月) 12:47:25
<Grid Width="{Binding ListBoxのWidth}">?

891 :デフォルトの名無しさん:2009/12/21(月) 13:07:06
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
で出来たわ

892 :デフォルトの名無しさん:2009/12/21(月) 13:19:08
>>890
レイアウトに異様に時間が掛かった上に変なレイアウトになりました…

>>891
おおすげー! ほんとだ!
添付プロパティとして使えるとは思わなかったです…

おかげさまで解決です、どうも皆さんありがとうございました。

893 :デフォルトの名無しさん:2009/12/22(火) 04:05:47
なんでそこでScrollViewerを参照できるのかってのがまだ良く分かってないんだよな俺

894 :デフォルトの名無しさん:2009/12/22(火) 04:50:56
>>893
ScrollViewer.SetHorizontalScrollBarVisibilityがあるから

895 :デフォルトの名無しさん:2009/12/22(火) 05:43:50
まぁそうなんだが、暇なんでサンプル

<Button Content="Test" ScrollViewer.VerticalScrollBarVisibility="Visible">
 <Button.Template>
  <ControlTemplate TargetType="{x:Type Button}">
   <Grid>
    <ScrollViewer>
     <ScrollViewer>
      <ContentPresenter/>
     </ScrollViewer>
    </ScrollViewer>
   </Grid>
  </ControlTemplate>
 </Button.Template>
</Button>

896 :デフォルトの名無しさん:2009/12/22(火) 05:47:37
VerticalScrollBarVisibilityをいろいろ変えてみると面白いかもね

897 :デフォルトの名無しさん:2009/12/22(火) 06:40:11
読み取り時のRenderSize.WidthとActualWidthの区別がわけわかめ

898 :デフォルトの名無しさん:2009/12/22(火) 07:05:34
FrameworkElement.ActualWidthの実装
public double ActualWidth {
get {
return base.RenderSize.Width;
}
}

899 :デフォルトの名無しさん:2009/12/22(火) 14:53:24
>>889-895の様な事はMSDNのどこら辺に書いてあるんでしょうか?

900 :デフォルトの名無しさん:2009/12/22(火) 18:57:35
依存関係プロパティのとこ

901 :899:2009/12/22(火) 19:55:38
>>900
ttp://msdn.microsoft.com/ja-jp/library/ms752914.aspx
ListBoxとScrollViewerの関係が書いてないんですけど
何か見落としてますかね?

902 :デフォルトの名無しさん:2009/12/22(火) 22:40:34
あ、もっと具体的なことかな?

ListBox ControlTemplate の例
http://msdn.microsoft.com/ja-jp/library/ms754242(VS.80).aspx

903 :デフォルトの名無しさん:2009/12/22(火) 23:09:24
結局のところ、xamlって必要だったのかね、とふと思うときがある。
xamlだけでなるべくいろんなことが出来るようにするあまり、xaml自体の仕様が
汚くてわかりにくい上、わかりやすかったはずの.Net Fraworkにもキモイしくみが
ごちゃごちゃと持ち込まれ過ぎて、system.windowsの体系が複雑怪奇な収拾の付
かないようなもんになってしまったように思えるんだが。
一番キモイのがレイアウトの仕様。デバイスコンテキスト非依存という方向性は
いいとして、なんであんなにわかりにくく使いづらい、設計なんだ?

904 :デフォルトの名無しさん:2009/12/22(火) 23:16:57
そうだな
xamlでかくのはPanelにぺたぺた貼りつけるところまででいい

905 :デフォルトの名無しさん:2009/12/22(火) 23:21:30
できるだけでしなくてもいいのがいいところ

906 :デフォルトの名無しさん:2009/12/22(火) 23:22:31
さらに言えば、Blendみたいなツールはもっと普及すべきで
XAMLをメモ帳でゴリゴリ書く文化が続いていたのが問題
こういうカオスな実装は、見る必要がある時だけ見るべきだ

907 :デフォルトの名無しさん:2009/12/22(火) 23:28:06
Blendってそんなに便利なの?

908 :デフォルトの名無しさん:2009/12/22(火) 23:29:52
>>907
PNGエクスポート機能がほしいくらい便利よ

909 :デフォルトの名無しさん:2009/12/23(水) 00:05:41
>>902
いろいろ実験してみたんだけど

<ContentControl ScrollViewer.VerticalScrollBarVisibility="Disabled">
 <ContentControl.Template>
  <ControlTemplate>
   <ScrollViewer>
    <TextBlock Text="aaa" />
   </ScrollViewer>
  </ControlTemplate>
 </ContentControl.Template>
</ContentControl>

<ContentControl ScrollViewer.VerticalScrollBarVisibility="Disabled">
 <ScrollViewer>
  <TextBlock Text="aaa" />
 </ScrollViewer>
</ContentControl>

前者だとScrollViewer.VerticalScrollBarVisibilityが反映されて
後者だと反映されないのはなんでだろう?
ttp://msdn.microsoft.com/ja-jp/library/ms753197.aspx
これとは違う仕組みなの?

910 :デフォルトの名無しさん:2009/12/23(水) 00:46:40
BlendでFormsみたいにTabIndexを一括で指定する機能があればいいのにと思う

911 :デフォルトの名無しさん:2009/12/23(水) 03:27:20
他人の書いたXAMLってめちゃくちゃ読みにくいよな…
元々論理的な構造を表すものではないし、書き方によっては
「処理の途中までXAMLで実現したけど後はViewModelに任せています」とか、
「ViewModelがこの型で返すから、えーっとデータテンプレートを探して…どこだ?」とか
「ココのデータコンテキストは四階層上のアレ?あ、二階層上で変わっている」とか、もうねw。

どうすりゃ他人が読めるXAMLをかけるんだろうか?設計ドキュメントとかどうすればいいんだろうか?

912 :デフォルトの名無しさん:2009/12/23(水) 10:43:31
まず//を使えるようにすることだな
場所によってはコメント入れにくくて作業効率ダウン

913 :デフォルトの名無しさん:2009/12/23(水) 13:52:26
<!-- -->これは使いにくい

914 :デフォルトの名無しさん:2009/12/23(水) 14:09:02
まあ、xamlは従来のForm1.Designer.cs部をわざわざXML形式で表現したような
もんなんでしょ?
window1.InitializeComponent()の「定義に移動」すると、window1.g.i.csってファイルが
生成されてるけど、本来これに当たるもんなんだろ。RADツールが面倒見るべきもんであって
テキストでガリガリ書いたりソースをいじったりするべきもんじゃない。

VSがそこら辺をうまく隠蔽してxamlを直接見る必要は殆どないような形にしないと
wpfの普及はありえないと思うんだがなあ。そうなったらそうなったで、なんでわざわざ
UIをXMLで表現する必要があるのかっていう根本的な疑問にブチ当たるけれど…。

915 :デフォルトの名無しさん:2009/12/23(水) 14:36:03
レイトバインドは楽だけどな
前もリフレクションで似たようなこと出来たけどね

916 :デフォルトの名無しさん:2009/12/23(水) 14:41:27
もうちょい作業が軽快に出来るなら文句はないよ
VSにしろBlendにしろもっさりしすぎ

917 :デフォルトの名無しさん:2009/12/23(水) 14:47:37
>>883
MにIEditableObjectを実装するという手もあるけど。
まぁ、VMで実装したほうがよいinterfaceではあるな。


918 :デフォルトの名無しさん:2009/12/23(水) 14:54:06
>>914
そう、本来は隠蔽すべきところ。XAML導入の本来の目的はデザイナとプログラマの仕事の分離だから。
プログラマが決めたViewModelとデザイナが決めたViewがあればくっつけばbindで動く。

…はずだった。MSはその予定だった。
プログラマにとっては部品がないとか、機能が足りないといった問題を解決するため
頭が痛くなるようなXAML構造をひたすらテキストエディタで書くハメになり、
デザイナはその難解なXAMLを理解し"動かしても正しく働く"スタイルを考えなきゃならない。

結局は全く分離できず両者の作業量だけが増える。まさに、誰得

919 :デフォルトの名無しさん:2009/12/23(水) 15:06:23
XAMLの複雑さなんてHTML+CSSと比べればかわいいものだと思うが。WPFユーザーはHTML書けない人ばかり?
UserControlやTemplateのおかげで生のHTMLより部品化しやすい(SSIなんて誰もつかわん)し。
ちゃんとデザイン上の細部をStyleに切り出していればUI構造はすっきり見通しの良い状態を維持できるぞ。

>>914
>UIをXMLで表現する必要があるのかっていう根本的な疑問
むしろ条件分岐やループなどのロジックが不要なUI初期化を、あえてコードで表現することのほうが問題かと。
たとえば「すべてのFormのフォントサイズの初期値を一括変換するツールがほしい」なんて言われたときに
C#のコードをparseして書き換えるのとXAMLをparseして書き換えるのではどちらが楽か。


920 :デフォルトの名無しさん:2009/12/23(水) 15:14:03
中の人乙

921 :デフォルトの名無しさん:2009/12/23(水) 15:28:22
> C#のコードをparseして書き換えるのとXAMLをparseして書き換えるのではどちらが楽か。

どっちが楽かなんてにたようなもんだろ。そもそもソースをパースして書き換えるなんて
バカなことしてる時点でアウト。何十枚も画面があるのにすべての画面をwindowから直接
派生して作るなら設計がアホ。きちんとした基底クラスを作ってそこから派生させれば
別にどうって事ないだろ。

922 :デフォルトの名無しさん:2009/12/23(水) 15:34:42
>>921
で、例外的に「この画面のフォントだけは」とかいう要件が出てきて・・・
そこで初めてUIの分離が必要ってはなしになるんだろ
先祖帰りしてどうする

923 :デフォルトの名無しさん:2009/12/23(水) 15:38:58
ぶっちゃけHTML+CSSのほうがノウハウあるから楽勝
XAMLやってるとMSDNをフル印刷したくなる衝動に駆られていやになるわ

924 :デフォルトの名無しさん:2009/12/23(水) 15:50:14
CSSならVS2008の手厚い支援があるだろが
周辺機能が足りてないからXAMLは誰得だっつーてるのに何言ってんだか

925 :デフォルトの名無しさん:2009/12/23(水) 15:53:08
blendでいいじゃん

926 :デフォルトの名無しさん:2009/12/23(水) 16:03:12
誰得ちゃんはみんなメモ帳使ってコーディングしてると思っちゃったのか

927 :デフォルトの名無しさん:2009/12/23(水) 16:19:58
>>921
XAMLをいじるツールとC#をいじるツール、どちらが作りやすいかという話なんだが似たようなものというのか。
C#のコードを操作できなくてもXMLのDOMを操作できる人間は見渡せば周りにいくらでもいるが。

そもそもツールの作りやすさの話をしているのに、いきなり継承にまで話が飛ぶのも変だし。
そういう用途に継承を使うのも気に食わんが。。

アドホックに解決するのは悪いことじゃないし
他人が作ったひどいアプリを保守することもあるんだから、選択肢は多いほうがいい。
「きちんとした基底クラスから派生しないなんて設計がアホ」と歯ぎしりすることもなく
となりのPython使いを捕まえて「昼飯おごるからXMLいじるちょっとしたコード書いてくれ」と言える。


928 :デフォルトの名無しさん:2009/12/23(水) 16:24:13
XAMLはXMLでなくて独自の記法を導入しても良かったかもしれないね。
javaFXなど最近ではそういう流れもある。

929 :デフォルトの名無しさん:2009/12/23(水) 16:34:39
> 例外的に「この画面のフォントだけは」

それだけなら、デフォルトフォントを帰るのになんの苦労もいるまい。

930 :デフォルトの名無しさん:2009/12/23(水) 16:36:48
> アドホックに解決するのは悪いことじゃないし
> 他人が作ったひどいアプリを保守することもあるんだから、選択肢は多いほうがいい。
> 「きちんとした基底クラスから派生しないなんて設計がアホ」と歯ぎしりすることもなく
> となりのPython使いを捕まえて「昼飯おごるからXMLいじるちょっとしたコード書いてくれ」と言える。

そういうくだらん目的のためにXAMLって生まれたわけね

931 :デフォルトの名無しさん:2009/12/23(水) 16:43:00
>>929
「それだけなら」ってわかってる癖にw


932 :デフォルトの名無しさん:2009/12/23(水) 17:58:37
>>930
XML標準にのっとっているためツールを書きやすいということが「くだらん」とは思わないが。
そもそもUI定義言語をもっていないUIフレームワークのほうが珍しいんじゃない。
古くはWin32のrcから、FirefoxのXUL、Mac OSXのCocoa、GTKのgrade
どちらかというとWinFormsが異色なんだよなぁ。


933 :デフォルトの名無しさん:2009/12/23(水) 21:29:20
Xamlを理解できないのは自分が悪いんじゃなく
Xamlがいけないのだと言って八つ当たりしてるように見えるな。
まあ実際触り初めの頃は情報量が少なすぎてWpf糞杉とか思ったけど。

934 :デフォルトの名無しさん:2009/12/23(水) 21:35:22
.NET で生産性が高いのに WPF で泥沼にはまったかんじがするから使うきが失せていくのも事実
>>933 みたいにまじめに勉強したやつが馬鹿を見そうで怖い

935 :デフォルトの名無しさん:2009/12/23(水) 21:42:56
デザイナーと協業図るような若者は最初っからxamlだろ
別にお前が心配する筋合いじゃない

936 :デフォルトの名無しさん:2009/12/23(水) 22:19:25
デザインが絡まなければ泥沼ってほどではないと思うけどなぁ
Formsだって凝ったことやろうとすると泥沼とも言える訳だし

937 :デフォルトの名無しさん:2009/12/23(水) 23:19:28
WinFormsと比べたら糞の固まりから腐葉土の固まりくらいになったと思うよ。

938 :デフォルトの名無しさん:2009/12/24(木) 00:31:06
いまさらFormsは学びたいと思わんな

939 :デフォルトの名無しさん:2009/12/24(木) 01:02:12
XAMLを導入して楽になるか?
俺は(ノウハウが足りないという点が解決したとしても)
コードが増えるばかり、問題と手間が増えるばかりで全然だと思うが。

940 :デフォルトの名無しさん:2009/12/24(木) 01:49:28
そりゃformsベースで考えた仕様を一人で構築すんならxamlなんて弄る必要もないよ
当たり前じゃんそんなの
wpfを活かすつもりで考えてグラフィック要素をxaml以外で受け取って構築するの?
大変そうだね頑張って

941 :デフォルトの名無しさん:2009/12/24(木) 01:56:10
XAMLに文句を言う人は一度DataTemplateをコードで書いてみるといいよ。笑っちゃうから。


942 :デフォルトの名無しさん:2009/12/24(木) 02:07:05
Formsで実現できるLook&FeelやエフェクトとWPFじゃ次元が違うから
どっちが楽とか比較がアホらしいわ

943 :デフォルトの名無しさん:2009/12/24(木) 08:26:24
高次元のエフェクトなんていらん。楽に目的を実現できればそれでいい。
そんな用途もある。

944 :デフォルトの名無しさん:2009/12/24(木) 09:56:58
その程度なら使い慣れたWinForms使えばいいじゃん。君、馬鹿なの?

945 :デフォルトの名無しさん:2009/12/24(木) 12:25:26
その程度の目的でもWpfは優位だと思うけどなあ。

946 :デフォルトの名無しさん:2009/12/24(木) 13:24:09
WinFormsよりはマシだが、もっとうまいやり方があったんじゃないの?って話だろ

947 :デフォルトの名無しさん:2009/12/24(木) 14:43:40
未来に期待
それともいいアイデアあるの?

948 :デフォルトの名無しさん:2009/12/24(木) 20:12:14
これ(http://calcium.codeplex.com/)試してみようと思ったんだが、
日本語版のVS2008には対応してないんかな?
インストールしても新規プロジェクトにCalcuim ModuleとCalcium Projectがでないわ。

949 :デフォルトの名無しさん:2009/12/24(木) 20:36:45
>>948
Video見たけど、何するものかわからんかった
どういうものなの?


950 :デフォルトの名無しさん:2009/12/24(木) 21:13:37
CAL(Prism)の学習用アプリケーション…だと思ってます。
WPFの複合アプリを作る際のフレームワークと考えていいのかな。

951 :デフォルトの名無しさん:2009/12/25(金) 22:03:13
WPFって普及してますか?

952 :デフォルトの名無しさん:2009/12/25(金) 22:50:16
正直してるとはいいがたい。
Silverlightでいいじゃんって気がしてる。

953 :デフォルトの名無しさん:2009/12/25(金) 22:51:47
Silverlightは同期通信できないから
WPFのほうがはやるよ

954 :デフォルトの名無しさん:2009/12/25(金) 22:59:39
AJAXも非同期だから、そこを問題にする人は昔より少ないと思う

955 :デフォルトの名無しさん:2009/12/25(金) 23:05:39
普及の基準はどこらへんなのか

956 :デフォルトの名無しさん:2009/12/25(金) 23:12:09
vectorの新着とかで適当に選んでDLしたソフトがWPF製かどうかとか。


957 :デフォルトの名無しさん:2009/12/25(金) 23:15:04
>>954
XHRでは同期通信も可能だぞ

958 :デフォルトの名無しさん:2009/12/25(金) 23:18:01
あ、そういえば同期もあったな でも処理が止まるからなぁ

959 :デフォルトの名無しさん:2009/12/25(金) 23:19:06
フォーカス移動に絡めたりするときに非同期しかないと死ねる

960 :デフォルトの名無しさん:2009/12/25(金) 23:22:44
AIR製のアプリの方がまだ見掛かける気がする。
登場時期の違いってのもあると思うけど。

VS2010が出たらちょっとはかわるのかな。

961 :デフォルトの名無しさん:2009/12/26(土) 00:16:23
マルチプラットフォームはAdobeの競合技術のほうが進んでる気がするなあ
.NETってLinuxとかMacは実装ちょっと遅れてるでしょ?
なのでAdobeの方選ぶ人は少なくないんだと思う。

俺はWindowsしか使わないから割とどうでもいいんだけどな

962 :デフォルトの名無しさん:2009/12/26(土) 00:29:03
それをいうならMacやLinuxのFlashもたいがい酷い

963 :デフォルトの名無しさん:2009/12/26(土) 00:37:41
大概酷いが、まぁ多少不安定なところに目を瞑ればそれなりに使えるからなぁ…
Mono(Moonlight)に比べればまだいいさ。

964 :デフォルトの名無しさん:2009/12/26(土) 01:01:24
Adobeは普及してるんだが実装がMSより遙かにクソなのがちょっふじこ

965 :デフォルトの名無しさん:2009/12/26(土) 10:54:41
どうでもいいネタだが、モニターを横に寝かせて縦長にすると(もちろん、表示は270度回転して)
すごく開発がしやすくなった。特にXAMLのデザイナとコードエディタが広くとれるのがいい。
今度買うときは回転式のにしよ。


966 :デフォルトの名無しさん:2009/12/26(土) 11:56:41
ClearTypeがきれいに出ないじゃん

967 :デフォルトの名無しさん:2009/12/26(土) 12:07:41
>>965
デュアルモニタでいいじゃん

968 :デフォルトの名無しさん:2009/12/26(土) 12:09:37
俺はコーディング用には安物液晶しか買わないからチルトしたら見えなくなる

969 :デフォルトの名無しさん:2009/12/26(土) 12:10:33
XAMLの縦分割のやつって分離できたっけ?

970 :デフォルトの名無しさん:2009/12/26(土) 13:09:17
WPFは起動の遅さがネックだよなぁ。

971 :デフォルトの名無しさん:2009/12/26(土) 13:14:19
Formsよりはましじゃないか?

972 :デフォルトの名無しさん:2009/12/26(土) 13:49:10
Formsのほうが圧倒的に速いよ。
VSTOでプラグイン作るとよくわかる。


973 :デフォルトの名無しさん:2009/12/26(土) 13:54:08
WPFはあと、ほんのちょっと、起動の遅さ、XAMLの使い難さ、VSによる支援の足りなさ、コントロールの不足、
資料/前例の足りなさ、バインド含む処理の重さと、リソースの使用量がどうにかなればなぁ。
色々あるメリット、例えばオサレとかオサレとかオサレとか、あとオサレとかが活かせるんだけどなぁ…

974 :デフォルトの名無しさん:2009/12/26(土) 13:54:47
XPまではFormsのほうが早いだろうな
ま、リッチなインターフェースだし適材適所だな

975 :デフォルトの名無しさん:2009/12/26(土) 14:06:25
Windows7に乗ってるいろいろなアプリはもうWPFばかりなの?
MSが移行してるかどうかが重要だな。

976 :デフォルトの名無しさん:2009/12/26(土) 14:07:21
ngenは効果が薄いといわれるが、wpfアプリには効果が大きいね。

977 :デフォルトの名無しさん:2009/12/26(土) 14:08:45
>>976
へーそうなんだ
いいこと聞いた
なんか比較できる資料とかあったら教えて

978 :デフォルトの名無しさん:2009/12/26(土) 14:13:23
FormsのくそだっさいUIから脱却出来るだけでも魅力的なんだからがんばれWPF

979 :デフォルトの名無しさん:2009/12/26(土) 14:22:11
>>975
MS謹製でWPF使ってるのなんてあるのか? .NETですらかなり少ないと思うのだが。

WPFはVista以降のWindows専用と考えるとかなりいい環境なんだけど、
Monoがサポートしないのが難点だよなあ。
Formsも事実上使えないから、Gtk#とかwx.NETとか使う羽目になる

980 :デフォルトの名無しさん:2009/12/26(土) 14:30:32
VS2010…

981 :デフォルトの名無しさん:2009/12/26(土) 14:32:30
Monoをそんなに重要視する必要ある?

982 :デフォルトの名無しさん:2009/12/26(土) 14:33:34
Expression EncoderやBlendなんかはWPF
VS2010もWPFを使ってる

クロスプラットフォームでのWPFの扱いは、SWTみたいな感じになるんじゃないかなぁ

983 :デフォルトの名無しさん:2009/12/26(土) 14:34:34
>>981
仕事のほうではさっぱり使わないが、
フリーソフト作ってる身だとC#の快適さ+マルチプラットフォームはかなり恩恵が大きい

984 :デフォルトの名無しさん:2009/12/26(土) 14:36:05
MSがWPF使ってるのは、WPFを使わざるを得ないWPF開発環境とその周辺製品だけ

985 :デフォルトの名無しさん:2009/12/26(土) 14:36:59
おまえらどんどん作れよ

986 :デフォルトの名無しさん:2009/12/26(土) 14:39:15
XAML使うのはパネルまわりだけでいいと思う

987 :デフォルトの名無しさん:2009/12/26(土) 16:43:53
>>984
Windows7にはPowerShell ISEというのがあってだね・・・

988 :デフォルトの名無しさん:2009/12/26(土) 16:44:50
エッセンシャルWPFを片手にポチポチ勉強始めました。
考え方は非常に理にかなっている様に感じますが、だんだん複雑になってくると
こんがらがってしまいます。特にバインディング周りのデータテンプレートのネスト
とか階層データテンプレートのあたりは、一応理解は出来るんだけどいざ自分で書いて
見ようとすると、インテリセンスが効かないこともあって全然書けないです。
テンプレートの探索で型によって自動的に適用されるというような、探索のルールも
いろいろあって今ひとつよく分からないです。

ここら辺をスパッとわかり易く解説したサイトとかありませんか?

989 :デフォルトの名無しさん:2009/12/26(土) 16:53:10
XAMLエディタでインテリセンス使えるようになるだけで
なんか大分楽になるような気がする。

990 :デフォルトの名無しさん:2009/12/26(土) 18:11:40
XAMLデザイナはまだアルファ版て感じだな。
致命的なバグも残ってるし。

991 :デフォルトの名無しさん:2009/12/26(土) 19:36:15
ようつべに色々とWPFやBlendをつかって作ったプログラムを晒している動画があるな。結構、参考になる。

992 :デフォルトの名無しさん:2009/12/26(土) 20:11:58
>>991
結局まだその段階ってことなんだよね。
WPF使ってみました!!ってのが売りになるっていうか。
WPF使っててあたりまえ、まではまだまだ先だよねえ。

993 :デフォルトの名無しさん:2009/12/26(土) 20:15:17
そもそも商用のコンシューマ向けだと.netが当たり前になってないからなあ

994 :デフォルトの名無しさん:2009/12/26(土) 20:35:26
そーかー?
当たり前ってほどではないが、新興のソフトウェアだと結構.NETあるぞ

995 :デフォルトの名無しさん:2009/12/27(日) 03:24:56
当たり前より売りになるぐらいの方がよくね?

996 :デフォルトの名無しさん:2009/12/27(日) 10:59:07
次スレ
http://pc12.2ch.net/test/read.cgi/tech/1261879110/

997 :992:2009/12/27(日) 11:10:37
>>995
売りになるっていうのは適当な表現じゃなかった。

たとえば、よくあるTwitterクライアントをWPFで作ってみました(Twitter部分はしょぼいです)
とか
よくある2chブラウザをWPFで作ってみました(ブラウザ部分はWPFの練習なので適当です)
みたいな、WPFで作ってみたことだけが目的のようなのばっかりみたいな。

998 :デフォルトの名無しさん:2009/12/27(日) 12:05:38
(*´∀`*)

999 :デフォルトの名無しさん:2009/12/27(日) 12:06:21
(*´∀`*)

1000 :小倉優子 ◆YUKOH0W58Q :2009/12/27(日) 12:07:02
1000ならジュースでも飲むか

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

229 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)