WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4at TECH
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4 - 暇つぶし2ch50:48
09/06/28 10:50:17
>>49
レスありがとう。
教えてくれた方法で無事できました。
感謝。

51:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/28 19:06:12
どんだけトヨタ推しなんだよ

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

54:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/29 09:52:38
CellTemplateを書く

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

もうWPFわけわからんw

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

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

60:デフォルトの名無しさん
09/07/12 11:06:21
この辺が参考になるかな。
URLリンク(msdn.microsoft.com)

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

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

62:57
09/07/12 16:17:29
>>60
読んでみた

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

URLリンク(www.codeplex.com)


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

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

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

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

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

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

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

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

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

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

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

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

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

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch