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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あたらしい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 - October 2008 Release
ttp://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=15598

関連スレ
Microsoft Silverlight 2.0 その3
ttp://pc11.2ch.net/test/read.cgi/tech/1227324813/

過去スレ
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/01/09(金) 22:49:52
2
3デフォルトの名無しさん:2009/01/11(日) 00:19:22
Windows 7 beta 入れてみたが、「Windowsの機能の有効化または無効化」を開くと、
「Microsoft .NET Framework 3.5.1」というのがデフォルトで入ってた。3.5 SP1の事か?

でも、そのツリーの下にある、
Windows Communication Foundation HTTP Activation
Windows Communication Foundation Non-HTTP Activation
は入ってなかった。WCFが使えないって事?
4デフォルトの名無しさん:2009/01/11(日) 00:55:21
別に Vista のコンポーネントもそうだよ
ttp://msdn.microsoft.com/ja-jp/library/ms788757(VS.80).aspx
5デフォルトの名無しさん:2009/01/14(水) 14:12:25
WPF製の実用的なソフトってなに?
6デフォルトの名無しさん:2009/01/14(水) 15:16:13
7デフォルトの名無しさん:2009/01/14(水) 18:11:15
へぇ、それWPF使ってるんだ
8デフォルトの名無しさん:2009/01/14(水) 18:32:45
VS2010
9デフォルトの名無しさん:2009/01/15(木) 01:39:24
Windows 7 x64 のベータ版を入れてみたが、Windows自身のGUIはまだWPFベースにはならないんだな。
Vistaと同様、相変わらずWin32ベースのGUIがそのまま残っていることに驚き。

しかしXP環境の .NET3.5で動かすと異様にモッサリなWPFも、Windows 7の環境だとサクサクだね。
それにVS2008もx64だと速い速い!
.NETのパフォーマンス、そしてIIS 5.1/6とIIS 7との機能差も無視できなくなったし、企業も今度こそは
Window Server 2008と、Windows 7 に大移動かね。
10デフォルトの名無しさん:2009/01/15(木) 10:02:05
VS2008はWOWで動いてるんじゃなかったっけ?
11デフォルトの名無しさん:2009/01/15(木) 23:02:58
つまり、x64 Windeows上では32ビットアプリもサクサク動くということなんだろう。
12デフォルトの名無しさん:2009/01/15(木) 23:44:43
VSにも64bitとかあったようななかったような・・・
13デフォルトの名無しさん:2009/01/16(金) 13:38:12
>>5
LoiloScopeもWPFじゃなかったっけか
14デフォルトの名無しさん:2009/01/19(月) 22:36:57
INotifyPropertyChangedを実装するクラスのプロパティをUIにバインディングしてるんだけど
プロパティの変更通知をUIと違うスレッドでしても平気なの?
実験では問題なく動いてるように見えるんだけど、フレームワーク的に想定してるの?
15デフォルトの名無しさん:2009/01/22(木) 15:51:42
俺は 動く=問題ない と思ってるw
でも干渉とかを心配するなら場所を1つに決めて書き直す事を勧める
16デフォルトの名無しさん:2009/01/27(火) 23:40:30
DispatcherObject.CheckAccess()がインテリセンスに出てこないのはなんでだろう…
17デフォルトの名無しさん:2009/01/27(火) 23:49:59
DispatcherObjectの全てのメンバには
[EditorBrowsable(EditorBrowsableState.Never)]属性が付けられてる
DispatcherObjectはWPFの多くのクラスが継承してて,メンバ名も抽象的で
コントロールのメンバと混ざるとややこしいから隠してるんじゃね
18デフォルトの名無しさん:2009/01/27(火) 23:51:54
StackPanelでコントロールを並べたいんだが、
ListBoxみたいにItemsSourceを設定する方法はない?
19デフォルトの名無しさん:2009/01/28(水) 00:15:07
それこそListBoxで並べりゃいいんじゃね?
20デフォルトの名無しさん:2009/01/28(水) 00:19:24
>>17
ああ、そういうことなんか
21デフォルトの名無しさん:2009/01/28(水) 19:40:00
>>19
選択できないようにできる?
22デフォルトの名無しさん:2009/01/28(水) 19:50:12
画像に対してテキストの回り込みの方法を教えてほしい。
HTMLならalignとかで出来るけども、回り込み的な表現を行いたい場合の
方法がわからない。
わかる方、教えてほしいです。
23デフォルトの名無しさん:2009/01/28(水) 20:33:07
2chは日本で一番大きな掲示板だと聞いたのですが
WPFって世界で使ってる人5人ぐらいですか?
24デフォルトの名無しさん:2009/01/28(水) 20:48:37
WPFを作ったチームが5人とは思えないからもう少し多いだろうな。
25デフォルトの名無しさん:2009/01/28(水) 20:53:03
VS2010を作ってるチームはどんぐらいなんだろう?
26デフォルトの名無しさん:2009/01/28(水) 20:55:47
>>25
2010人くらいじゃね?
27デフォルトの名無しさん:2009/01/28(水) 21:22:34
そういうことだったのか
28デフォルトの名無しさん:2009/01/28(水) 21:25:11
マイクロソフトと戦う2010人の開発者たち

〜 Microsoft VS 2010 〜
29デフォルトの名無しさん:2009/01/28(水) 21:29:14
説得力
30デフォルトの名無しさん:2009/01/28(水) 21:32:24
WPFにはFlashみたいな画質設定とかないのかな?
瞬間の動作は気分的な問題だから、重くならないように荒くさせてあげたいんだけど。

(だったら瞬間どうさ止めろとかなしでw
31デフォルトの名無しさん:2009/01/28(水) 21:37:35
<Label Content="{Binding Name}" />
今、こういうふうにラベルで文字を表示してるんだが、

<Label Content="{Binding Foo(Name)}" />
こんな感じで処理してから表示したい。
どうすればいい?
Fooを↓みたいに定義すればコンパイル通るんだが文字が表示されなくなった。

public void Foo(string str)
{
  return "foo" + str;
}
3231:2009/01/28(水) 21:38:45
まちがえた。
public string Foo(string str)
{
  return "foo" + str;
}

こうだな。
33デフォルトの名無しさん:2009/01/28(水) 21:45:08
IValueConverter使えば?
3431:2009/01/28(水) 22:00:39
>>33
ありがと。

でもこれで表示されないのはなんで?
35デフォルトの名無しさん:2009/01/28(水) 22:03:38
そんなバインディングできない! 例外だ例外!
あ、例外が出たから空に置き換えときますね
36デフォルトの名無しさん:2009/01/28(水) 22:15:23
一週間も書き込みなかったのに急に勢いづくWPF恐るべし
37デフォルトの名無しさん:2009/01/29(木) 11:48:05
エクスプローラで"表示→アイコン"とした時の表示みたいに
・項目は水平に並べられる
・幅に収まらない場合は右端で折り返され、下に伸びていく
・画面に収まらない場合は垂直スクロールバーが表示される
という風にしたいのですが、下のようにWrapPanelを使っても折り返されず
右にどんどん伸びていって水平スクロールバーが出てしまいます。
どうすればいいのでしょうか?

<ListView Name="listView1">
 <ListView.ItemsPanel>
  <ItemsPanelTemplate>
   <WrapPanel />
  </ItemsPanelTemplate>
 </ListView.ItemsPanel>
</ListView>
3831:2009/01/29(木) 19:24:22
IValueConverterにコントロール自身を設定することはできない?
変換にはどうしてもコントロールにある情報が必要なんだが。

やりたいこととしては
名前とGUIDが入ったデータの配列があって、
名前をリストで表示したいんだが、
名前が同じでGUIDが違うデータがあったら後のデータを
「〜〜〜(2)」みたいなかんじで表示したい。



てかWPFって難しいな。
39デフォルトの名無しさん:2009/01/29(木) 21:46:43
>>37
WrapPanelのWidthが指定されてないから無制限に横に広がっちゃう
ViewBaseクラスのサンプルにWrapPanelの例があるよ

>>38
ConverterParameterでパラメータ渡すとか
つかIValueConverterにDictionaryとか持たせればどうとでもなるような気がするけど
4037:2009/01/29(木) 22:49:52
>>39
ありがとうございます。

<ListView Name="listView1">
 <ListView.ItemsPanel>
  <ItemsPanelTemplate>
   <WrapPanel Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=ScrollContentPresenter, Mode=FindAncestor}}" />
  </ItemsPanelTemplate>
 </ListView.ItemsPanel>
</ListView>

とすることでできましたが、ScrollContentPresenterというものがどっから出てきたのか分からず
ちょっとすっきりしません。
ListViewとScrollContentPresenterの関係についてはどこに書いてあるのでしょうか?
41デフォルトの名無しさん:2009/01/30(金) 03:51:26
>>40
ListView ControlTemplate の例
http://msdn.microsoft.com/ja-jp/library/ms788747.aspx

あと、Snoop っていう WPF のツリー構造を表示するツールもあるから、検索してみると良い。
どのプロパティに値を設定すれば、どんな風になるとか、実行しながら色々試せる。
42デフォルトの名無しさん:2009/01/30(金) 19:28:32
>>41
Snoopでツリー構造表示はすごく参考になります。
結局そのリンクにあるControlTemplateをカスタマイズする方法にしました。なんかいろいろできそうだし。
ありがとうございました。

<ListView.Template>
 <ControlTemplate>
  <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
   <ItemsPresenter />
  </ScrollViewer>
 </ControlTemplate>
</ListView.Template>
<ListView.ItemsPanel>
 <ItemsPanelTemplate>
  <WrapPanel />
 </ItemsPanelTemplate>
</ListView.ItemsPanel>
43デフォルトの名無しさん:2009/01/30(金) 22:46:41
来るVS2010ではWPF Toolkitが標準になるそうだけど
今から使ってる香具師はいる?
44デフォルトの名無しさん:2009/01/30(金) 23:01:22
WPFでリアルタイムにグラフを書かせたいのですが、どうすればいいでしょう?
グラフは

N分間の受信データをグラフに表示する
グラフにはN点で表され、それぞれの点は対応する時間(分)での最終データを表す
毎秒数回データを受信し、その都度グラフに反映する
ときどき値域が変化しその都度全体を再描画する

こういうものです
45デフォルトの名無しさん:2009/01/30(金) 23:07:38
普通にタイマーでまわした方が妥当じゃない?
「変わったときに」と指定するなら、タイマーで前回と差が出たら〜にすればいいと思うし、
それに全体をっていうのが引っかかるけど、やっぱ作画した上から瞬間のデータを書いてやるのが一般的。
46デフォルトの名無しさん:2009/01/30(金) 23:53:24
データの送受信タイミングを受信側が制御するならタイマー
データの送受信タイミングを送信側が制御するならコールバック
47デフォルトの名無しさん:2009/01/31(土) 00:00:30
WPFの入門書はどれがいいでしょう?
48デフォルトの名無しさん:2009/01/31(土) 10:58:12
ダブルパフィーの超技巧テクニック第2版中国版
49デフォルトの名無しさん:2009/01/31(土) 11:44:26
「XAMLプログラミング」

Microsoft株式会社 川西裕幸 高橋忍 著
ISBN978-4-7973-3916-1
50デフォルトの名無しさん:2009/01/31(土) 13:05:52
WPFエッセンシャル買ってみたけど、このフレームワークの背景とか
意味とかはふむふむと興味深い点も多かったけど、正直実践にはあまり
役立ちそうにない本だった。
51デフォルトの名無しさん:2009/01/31(土) 14:27:01
リストビューの要素がダブルクリックされたらコマンドを実行させたくて
下記のようにスタイルを設定しようとしても、InputBindingsにsetアクセサが無いと言われます。
どうやればいいのでしょうか?

<ListView.Resources>
 <Style TargetType="ListViewItem">
  <Setter Property="InputBindings">
   <Setter.Value>
    <MouseBinding Command="ApplicationCommands.Open" MouseAction="LeftDoubleClick" />
   </Setter.Value>
  </Setter>
 </Style>
</ListView.Resources>
52デフォルトの名無しさん:2009/01/31(土) 15:46:20
>50
俺も読んだけど、ことWPFに関して言えば、フレームワークの背景に有る
考え方を知る事の方が重要だと思った。今までとかなり違うからね。
53デフォルトの名無しさん:2009/01/31(土) 16:35:35
XAML、よいんだがBindingの記述とかなんか直感的じゃないんだよなぁ・・・
54デフォルトの名無しさん:2009/01/31(土) 18:33:08
確かにエッセンシャルWPFはイマイチだった。
2005年にでたプログラミングWPFのほうがいい。(ベータ版が対象だが)
55デフォルトの名無しさん:2009/01/31(土) 19:27:16
>>53
そもそも面倒くさいよな。
ちょっとしたことでもコンバータとか書かねばいかんことが多いように見えるし。

思ったのは、頻繁に使う一般的な数値データのバインドなら、たとえばいっそ、
xamlでデータ専用クラスみたいなのを定義できるようにして、

<Data Name="mydata">
<Int Name="d" Enum={ i0,i1,i2 } i0={ value="5" min="0" max="10"} ・・/>
<Double Name="d2" Enum={ D0,D1,D2,D3 } D0={ value="6.2" min="0" max="20.0"} ・・/>
</Data>

(つまり class Mydata { int d[3] ; double d2[4]; }  と同義的なクラス。簡単なソフトならそのまま
基本変数をまとめたメインデータクラスとして使ってもいい)
などとして、
コードからは mydata.d[i0]= で値の授受が出来、
コントロールには
<Text Bind="mydata.i0">
で即ok,くらいにしてくれるといいようにも思うのだが。
56デフォルトの名無しさん:2009/02/01(日) 00:02:07
よくわからんのだが
XAMLというのはクラスのメンバの値の設定をマークアップ言語?で記述してる
って解釈でいいの?
それ以外なにか特徴ある?

どこ見てもいきなり文法の説明っぽいのばっかりでいまだに全体像がつかめない
5731:2009/02/01(日) 00:09:47
<Label>
 <Binding>
  <Binding.Converter>
   <colorful:MyConverter>
    <colorful:MyConverter.Data>
     <Binding Path="Data">
      <Binding.RelativeSource>
       <RelativeSource Mode="FindAncestor" AncestorType="{x:Type UserControl}" />
      </Binding.RelativeSource>
     </Binding>
    </colorful:MyConverter.Data>
   </colorful:MyConverter>
  </Binding.Converter>
 </Binding>
</Label>

これで実行すると出力に
System.Windows.Data Error: 4 : Cannot find source for binding with reference
って出て、MyConverter.Dataにも値がセットされてないみたいなんだがなんか原因分かる?

上記の部分はテンプレートの一部なんだが、このテンプレートを使用してるコントロールには
依存プロパティとしてDataが定義されている。
58デフォルトの名無しさん:2009/02/01(日) 00:38:55
>>56
すっごーく乱暴に言えばHTML/CSS+JavaScriptとXAML+C#/VB.NETで対応する感じ。
59デフォルトの名無しさん:2009/02/01(日) 00:55:51
>>56
その解釈で合ってるよ。タグ名がクラス名に該当する。
属性がプロパティ

WPF以外のクラスも生成できる
60デフォルトの名無しさん:2009/02/01(日) 00:59:42
コードを生成してるんじゃなくて実行時にパースしてるんだけどな
61デフォルトの名無しさん:2009/02/01(日) 01:16:29
新しくウィンドウ作るとデフォでpublic classとして作られるんだけど
internalじゃなくてpublicなのは何か理由あるの?
62デフォルトの名無しさん:2009/02/01(日) 01:35:06
>>51
ItemTemplateの方で記述すべきことじゃね?

>>57
そりゃConverterに先祖は存在しないだろう
63デフォルトの名無しさん:2009/02/01(日) 02:17:07
WPFのWindowをWindows.FormsのRegionみたいに範囲を指定して穴空けたり削ったりしたいのだけど
対応するプロパティってどれでしょうか?
ClipとかVisualClipかなと思ったのだけどうまくいかなくて。
6457:2009/02/01(日) 06:49:58
>>62
どうすればコントロールの依存プロパティにアクセスできる?

RelativeSourceについていまいち理解できてないんだが
いいサイトないかい?
65デフォルトの名無しさん:2009/02/01(日) 11:22:56
>>64
やりたいことの大枠は分かったけど実現方法が間違ってる感じがするよ
表現したいデータとUIを説明してくれれば助言できるかもしれない
38だけじゃ抽象的過ぎる
6657:2009/02/01(日) 13:51:08
>>65
「こんなデータも表現できるのかな」ってのをやってみただけだから
特に何か目的があって作っているわけではないんだ。

過去にC#(非WPF)の仕事で扱ったデータ構造を参考にしたんだが。
67デフォルトの名無しさん:2009/02/01(日) 14:21:36
だから、多分表現できる、ただ表現の仕方がまずいだけだろうっていってるのよん
目的? 「こんなデータも表現できるのかな」で十分じゃん
68デフォルトの名無しさん:2009/02/01(日) 16:10:34
つかどうでもいいって思ってるなら聞くなよ
69デフォルトの名無しさん:2009/02/01(日) 16:11:59
もしかしてWPFってxaml使わなくてもOK?
C#だけで書けるんならそのほうがやりやすい気がするんだが
xaml使うメリットってなんなの?
70デフォルトの名無しさん:2009/02/01(日) 16:20:12
XAML使わない方が圧倒的に面倒
試してみた俺が保証する
71デフォルトの名無しさん:2009/02/01(日) 16:22:20
C#で書くと階層構造作るのが面倒臭すぎる
後で解読不能
72デフォルトの名無しさん:2009/02/01(日) 16:35:53
XAMLでロジック作労とするとこれがまた面倒なんだよな・・・
73デフォルトの名無しさん:2009/02/01(日) 17:05:34
混ぜて使うのが普通だろ。
前のスレにXMALなしのサンプルがあったが、アップローダーからは消えてるな。
HTMLをjavascript+DOMで動かすようなもの。
74デフォルトの名無しさん:2009/02/01(日) 17:49:57
UIとロジックを徹底的に分離しようと意識して書いてみたら結構いい感じになった
ような気がする。
BindingとかStyleとかコマンドとか、理解が進むと便利な仕組みだと実感できる。
75デフォルトの名無しさん:2009/02/01(日) 20:38:26
UIとの分離については、RoutedCommand が重要なポイントだと思う。
C#側でコマンドをずらずら書くところをもうちょっと綺麗にしたいけど。
76デフォルトの名無しさん:2009/02/01(日) 21:43:51
xamlって、Cocoaでいうnibみたいなもん?
77デフォルトの名無しさん:2009/02/01(日) 22:32:12
>>70,71
C#に対する利点ってどんなところ?
何が書きやすくなるの?
78デフォルトの名無しさん:2009/02/01(日) 22:44:39
やってみればいいじゃん。
WPFはどっちのやり方も使えるように設計されている。
79デフォルトの名無しさん:2009/02/01(日) 22:49:40
一回好きなようにXAMLで書いてみて,それをC#で書き直してみたらいい

アニメーションとか死ねる
80デフォルトの名無しさん:2009/02/02(月) 00:29:06
画面の位置、階層構造 XAML>C#

ロジックや複雑な関係構築 XAML<C$
81デフォルトの名無しさん:2009/02/02(月) 00:30:03
どっちもナイス VB
82デフォルトの名無しさん:2009/02/02(月) 00:50:25
XAMLって言語なんですか?
個別に本を買って勉強した方がいいですか?
これやりたくて今C#勉強してるんですけど、道のりは長いですね
83デフォルトの名無しさん:2009/02/02(月) 01:46:19
>XAMLって言語なんですか?
XMLベースの宣言的言語
84デフォルトの名無しさん:2009/02/02(月) 01:58:25
別にWinFormsのような感覚でやっててもいいわけだし
85デフォルトの名無しさん:2009/02/02(月) 02:15:21
>>82
XAML は言語といっても HTML みたいなものだから、そんなに難しくはないよ。
見たり書いたりしているうちに、すぐに慣れると思う。
86デフォルトの名無しさん:2009/02/02(月) 03:08:29
>>85
静的なものはいいんだ
問題はバインド関係
正直リソース系のあの宣言方式はどうにかならんかったのかと
87デフォルトの名無しさん:2009/02/02(月) 13:20:19
MouseBindingで、(None or Shift or Ctrl or Shift + Ctrl)+左クリックを表すには
4通り全て書く以外方法は無いですか?
88デフォルトの名無しさん:2009/02/02(月) 13:52:33
そうやってROでくくってやれば1通りの書き方で収まってると思うんだけど?
89デフォルトの名無しさん:2009/02/02(月) 14:17:35
>>88
ROって何ですか?

<MouseBinding Gesture="LeftClick" Command="Hoge" />
<MouseBinding Gesture="Shift+LeftClick" Command="Hoge" />
<MouseBinding Gesture="Ctrl+LeftClick" Command="Hoge" />
<MouseBinding Gesture="Ctrl+Shift+LeftClick" Command="Hoge" />

Gestureにどう書けばいいんでしょうか?
90デフォルトの名無しさん:2009/02/02(月) 19:29:18
質問
XAMLの階層構造ってなんですか?
91デフォルトの名無しさん:2009/02/02(月) 23:37:31
画面の階層構造
92デフォルトの名無しさん:2009/02/03(火) 11:54:59
>>71

そっかなあ。HTMLドキュメントをDOMで操作すること考えたら、
アーキテクチャの設計次第では大したことないと思うが。

第一、いまどきGUIの設計はRADユーティリティ利用が当たり前で、わざわざ
コード書くバカいないだろ。windows formのときにそんなことしてた?
93デフォルトの名無しさん:2009/02/03(火) 15:06:40
だからそのデザイナが生成するコードがC#じゃなくてXAMLになっただけだよ
Designer.csなんてちょっと複雑になると人間が読むのが難しくなるし
必要に応じて修正することもできない
94デフォルトの名無しさん:2009/02/03(火) 15:54:12
一回デザイナのコードが壊れると、デザイナのウィンドウに
ブラウザの「ネットに繋がってません」的なコードを表示するようになる
これがコントロール関係でのエラーだと修復はほぼ不可能
95デフォルトの名無しさん:2009/02/03(火) 16:05:19
XAMLなら言語に依存しない
VBだろうとC#だろうとIronPythonだろうと同じデザイナが使える
96デフォルトの名無しさん:2009/02/03(火) 16:17:27
XAMLはずらっと項目が並んだプロパティウインドウをちまちまクリックするのは面倒くさいだけだと気付かせてくれた点で(作る側的に)UI革命
97デフォルトの名無しさん:2009/02/03(火) 17:02:51
XAML採用の理由は、半分ぐらいExpression Blend用だろ。
98デフォルトの名無しさん:2009/02/03(火) 18:24:55
Expression Blendだけ高すぎる・・・
せめてExpression Webくらいの値段にしてくれ
99デフォルトの名無しさん:2009/02/03(火) 19:03:36
あんなもん売れても無いからそのうちVSに統合されるよ
100デフォルトの名無しさん:2009/02/03(火) 19:46:10
ttp://japan.zdnet.com/news/os/story/0,2000056192,20387503,00.htm
> 特にVistaに組み込まれた画像描画機能であるWPFの利用が伸び悩んでいることに触れて

自分らは使ってないくせに、どの口が言うか
101デフォルトの名無しさん:2009/02/03(火) 19:49:25
VS2010で使われるよ
102デフォルトの名無しさん:2009/02/03(火) 20:20:56
基本XAML無しで追加機能としてXAMLも使えるよ的に出してればもう少し使われたかも。
いきなりUIだけ別言語使えとかハードルが高すぎたんだ。
103デフォルトの名無しさん:2009/02/03(火) 20:23:01
そもそも今まではUI作るのに開発言語なんか使えなかっただろ
いままで通りデザイナで作るのに加えて,オプションとしてXAMLを直接いじることもできるようになった
104デフォルトの名無しさん:2009/02/03(火) 20:31:30
WPFがココまで使われないとは正直思わなかった。
おそすぎんだよな。きびきび動いてたら色々と使う所も出てきたと思うけれど。
Longhorn時代に出ていた想定アプリケーションはどこへ行った屋ら
105デフォルトの名無しさん:2009/02/03(火) 20:33:47
>>102
昔だってダイアログはリソーススクリプトで別だったじゃないか。
まあ手書きなんてやらないけど。
106デフォルトの名無しさん:2009/02/03(火) 21:07:31
そもそもデスクトップアプリの数が増加どころが淘汰・減少気味だからなぁ。
数だけでいえばデスクトップのWPFアプリよりもブラウザベースのSilverlightの圧勝になりそう。
機能限定とはいえOffice移植はインパクトでかいよ。

とはいえWPF製デスクトップアプリも無いわけじゃない。
Xperfは最近やたら見かけるようになってきたし。
Windows 7付属のPowerShell統合環境も確かWPF製。

MS以外だと映像系で即戦力として使われてる感じ
ttp://loilo.tv/ とか >>6 が書いてた ttp://tmpgenc.pegasys-inc.com/ja/product/tme3.html とか
107デフォルトの名無しさん:2009/02/03(火) 21:59:59
>>100
普及させたいならまずExpressionタダにしろよ
108デフォルトの名無しさん:2009/02/03(火) 22:05:36
正直WPFは生産性が低い。

凝ったUIを作りこみたいときには、今までオーナードローなんかで
四苦八苦してたことから考えれば、むちゃくちゃ楽なnだけれど、
そもそも「凝ったUIを作りこみたい」という需要がほとんどないんだと
思う。

意外と便利だなと思ったのは、Expressionのプラグイン作ってみたとき。
UIをWPFのUserControlの形で渡して、INotifyChangeを実装しておくと
アプリケーション側でのユーザーの入力が簡単にわかるし、データの
やりとりはマネージ型でできるからこれまた簡単。プラグインを指定フォルダ
においとくだけでリフレクションで自動的にロードしてくれるのでインスコも
至極便利。

MSもWPF普及させたいならIEとかオフィスのIFを公開してWPFでプラグインを
簡単に作れるような実装をすればいいのにね。
IEのBHOなんてとてもいじる気になれない。なんで未だにUIがらみが
COMなんだよ。 お気に入りとかRSSのサイドパネルにカスタムのパネルを
WPFで自由に作って簡単にロードできたらWPFつかうきにもなるんだが。


どんどん作れるようにすればいいのに。
109デフォルトの名無しさん:2009/02/03(火) 22:08:48
>>104
WindowsXPで走らせるとモッサリするからな。
WPFが増えるには、WindowsXPの比率が下がらないとね。

Beta1で評価が高いWindows7、製品版の完成度と出来映えに掛かる!
110デフォルトの名無しさん:2009/02/03(火) 22:55:34
>>108
まぁ要するに、公開当初のコントロールが不十分で
しかもVS2008のエディタがdでも無く貧弱だった
これに尽きる

上の方でちまちまフォーカスしてプロパティ設定するより直打ちがいいとか抜かしてるのいるけど
直打ちじゃそもそもどんな属性があるのか「その場」で分からんじゃないか
とか言うと「最初にヘルプ嫁ボケ」とか言われそうだが、昔から読み辛いのに定評あるだろヘルプは
ただでさえ作法違うんだから、一目瞭然にすべきだった
111デフォルトの名無しさん:2009/02/03(火) 23:13:57
プログラムでビットマップデータ変更すると即座に表示に反映される、ってことしたいんだけど
WPFだとどうすればいいの?
112デフォルトの名無しさん:2009/02/03(火) 23:17:43
どのレベルで分からないのさ?
113デフォルトの名無しさん:2009/02/03(火) 23:22:24
>>111
WriteableBitmap?とエスパーしてみる
114デフォルトの名無しさん:2009/02/03(火) 23:26:39
WPF,xamlまださわったことないんだ
だからどのレベルといわれてもw

WriteableBitmap?ぐぐってみる、ありがとう
エスパー大好き^^
115デフォルトの名無しさん:2009/02/03(火) 23:26:49
Dependecyつかえば?
116デフォルトの名無しさん:2009/02/04(水) 00:12:43
Dependency?
依存関係プロパティとかいうやつですか?
勉強してみます
ありがとう

WriteableBitmap、チョイ見た感じわかりやすそうでいいですね
DirectX?やってるような気分になる
ほんとエスパー大好き^^
117デフォルトの名無しさん:2009/02/04(水) 00:27:16
>>110
なんでMSってヘルプ作るのこんなに下手なんだろうな
118デフォルトの名無しさん:2009/02/04(水) 00:30:09
形にこだわってるという印象がある
体裁ととのってればよし、みたいな
119デフォルトの名無しさん:2009/02/04(水) 01:50:23
伸びてると思ったらこれか!
120デフォルトの名無しさん:2009/02/04(水) 16:56:24
>110
xaml直打ちはありえんな。今時ウェブデザイナでもそんなことはせん。

そもそも「UIとロジックの分離」ってのが胡散臭すぎる。
ウェブの世界では確かにUIはデザイナが作ってるけど、そもそも商用パッケージ
製品でもない限り、デスクトップアプリケーションの世界UIデザインとロジックを分
離して別々の間が作るなんてあり得ない絵ゾラごとだとおもう。
xamlはxbapとかsilverlight専用でいいよ。
121デフォルトの名無しさん:2009/02/04(水) 20:45:21
>>117
 osx になってから、Appleの開発者サイトは見やすくなった。
122デフォルトの名無しさん:2009/02/04(水) 20:48:34
>>117
互換性ってのを気にしてるんじゃない?
Macはそこらへん無視だから作り直したりできるけど、MSは数十年前からの積み重ねだから自由が利かないんじゃない?
123デフォルトの名無しさん:2009/02/04(水) 21:17:40
>>120
多人数開発が当たり前のデスクトップアプリケーションで、UIとロジックをろくに分離せずに開発するとか完全に死亡フラグ
124デフォルトの名無しさん:2009/02/04(水) 22:25:43
>>123

画面設計とバックエンドを分離することはあるが、UIと「UIにまつわる」ロジックを
分離するなんてありえんだろ。
125デフォルトの名無しさん:2009/02/04(水) 23:01:33
>>124
モデル部、モデル部と連携するUIイベントハンドリングと相互作用、UIでの表示とイベント操作を行うコントロールは分離可能。
WPFでのXAMLは2と3の分離
126デフォルトの名無しさん:2009/02/05(木) 08:27:38
>>125

MVCの役割をキチンと分離して見通しがよく、相互に影響の少ない
プログラミングを、なーんて話と、実際にを分離・分業で作成して
うまくいくかどうかって話はべつもんだろ。
UIの入出力なんてそもそも不可分いったい何だから、「分けましょう」
なんて教条主義ふりかざしたところでうまくいかんものはいかん。

デザインがプログラミングとは別に意味を持つwebの世界ならともかく、
デスクトップアプリケーションでV,C分離して分業する意味もないし、
そんなことして品質と生産性が保てるとは思えん。

理想論としては分業しなくても極力見通しよく設計する方がいいのは
確かだけれど、
・分業するためにはVCをきっちり分離しておかないと という話と
・分業も必要ないのに VCをがちがちに分けすぎたものが果たして
使いやすいのか? という話を混同してない?
127デフォルトの名無しさん:2009/02/05(木) 08:56:36
>>126
いや、業務アプリでも捨てコードとかでないならきっちりやっとくべきだと思うけどね。
動かしたあととかに色々変えてくれとか言うものも出てくるはず。その中にはきちんと分離しておけばZAMLレベルの修正で住むものも宅差なると思われ。
ドメインモデルとのやりとりはUIの中のVからはやったらあかん。
128デフォルトの名無しさん:2009/02/05(木) 11:04:03
>>127

ごめん、俺の論点の出し方がわかりにくかったかも。
・どんなプログラムでもMVCを疎な設計にしておくべし → 同意
・M,V,Cを分業して別々な人が設計するならMVCの分離は必須 → 激しく同意
ところが上二つから
・V,Cは別々の人が設計すべき→・だからXAMLがいいんだ
という話にはつながらないはず。
分業はほんらいできればしたくないんだよ。究極には一人の人が設計から
実装まで完結できればそれが一番品質も、生産性も高いと思う。
ところが現代の大規模システムではそんなのとうてい無理だし、ウェブ系の
アプリケーションのようにデザインが重視される世界ではそもそもプログラマに
そのスキルがないから、「仕方なく」分業するわけだ。
XAMLは、その「仕方なく」の世界のために作り出されたものだから、別に
そんな必要のないときに使うと 使いにくいものになっているってのが俺の持論。

だいたい、UI設計の分離といっても、ちょっとした振る舞いやレイアウトの変更
程度なら確かに"XAMLレベルの修正ですむ"ケースもあるだろうけれど、
現実のプロジェクトではそんなことあり得ない。 これはMVCモデルのせいじゃ
なくて、 何をしたいのかよくわかってない糞ユーザーと、いつまでも
要件も仕様も凍結できず工程がぐだぐだの腐ったプロジェクトマネージメントの
せいだが…。
MVCモデル開発が仕様変更に強いというのは嘘だと思う。仕様がキチンと確定
していれば、MVCをキチンと分離した設計によって、効率的な分業が可能
というのが正しいのではと思う。
少なくとも現実に目を向ける限り、分離が可能なのは実はVとCじゃなくて
"Look"とVCだと思うんだよなぁ。。。"Look”のためだけならXAMLもあながち
悪くはないと思うが…。
129デフォルトの名無しさん:2009/02/05(木) 16:13:42
>・V,Cは別々の人が設計すべき→・だからXAMLがいいんだ
これが違うというのは同意。また分業しないほうがよいというのも同意。

でも仕様が不明確で肯定がグダグダになるのとMVCなどで分離するかどうかはまた別のはなしかと。

どうせ全員一致のMVCの定義すらないわけだしそこらへんの言葉遊びしても意味ないかと。
WinFormsよりはWPFのほうがいずれにしてもUIとモデル部などを分離しやすいのは確かだし。
仮に分業目的でなくてもWPFでの分離の仕方はそれなりにいいと思う。その手段としてXAMLがあるわけだが、それは必須条件じゃないし。
130デフォルトの名無しさん:2009/02/05(木) 16:40:28
http://quince.infragistics.com/
ここ面白いな
131デフォルトの名無しさん:2009/02/05(木) 17:19:19
>>130
かなり面白いな。
どっかにサンプルソースがないのかねぇ…。みつけられんかった。
132デフォルトの名無しさん:2009/02/05(木) 21:32:15
>>130
愛用のoperaじゃぴくりともう五課ねぇ・・・
133デフォルトの名無しさん:2009/02/05(木) 21:43:06
>>132
さぁ、Opera 10 alphaを入れるんだ
134デフォルトの名無しさん:2009/02/05(木) 23:09:02
>>130
何が面白いんだよ馬鹿しかもSilverlightだからスレ違いだろボケ
135デフォルトの名無しさん:2009/02/05(木) 23:25:41
見たけどページはSilverlightだけど中身はWPFじゃん
HTMLはスレ違いとかならかわいげがあるが
136デフォルトの名無しさん:2009/02/05(木) 23:37:06
両方あるんだけど、、、
137デフォルトの名無しさん:2009/02/06(金) 00:02:56
ソースもあれば最高なんだけどな
138デフォルトの名無しさん:2009/02/06(金) 14:19:44
VirtualizedWrapPanelが無いのはなぜなんだ…
139デフォルトの名無しさん:2009/02/06(金) 14:32:06
僕らが車輪の新生産を出来るように。
140デフォルトの名無しさん:2009/02/06(金) 21:40:48
StackPanelは画面内に収めるのが普通だから
141デフォルトの名無しさん:2009/02/07(土) 03:47:15
System.Windows.FormsのLocationに相当するものはWPFのコントロールにはないの?
142デフォルトの名無しさん:2009/02/07(土) 04:43:18
Canvas
143デフォルトの名無しさん:2009/02/07(土) 12:58:41
WPFにもなってLocationなんて指定する奴はWPFの存在意義がわかってない
144デフォルトの名無しさん:2009/02/07(土) 13:06:59
XAMLでブール値を設定するにはどうしたらいい?
〜〜〜="True"
じゃぁ文字列になってしまう。
145デフォルトの名無しさん:2009/02/07(土) 15:16:51
WPFってエフェクトさえ使わなければ軽い気がしてきた
146デフォルトの名無しさん:2009/02/07(土) 15:48:49
3.5はシェーダ使うようになったからエフェクト軽くなったらしいけど
147デフォルトの名無しさん:2009/02/07(土) 19:15:47
>>142
ありがとう

>>143
なんで聞いてるか理解できないならどっかいけ
148デフォルトの名無しさん:2009/02/08(日) 12:33:47
>>144
プロパティの型がBooleanならそれで通る
ContentみたいにObject型の場合は,ルート要素で
xmlns:sys="clr-namespace:System;assembly=mscorlib"
とした上で
<Button><Button.Content><sys:Boolean>True</sys:Boolean></Button.Content></Button>
149デフォルトの名無しさん:2009/02/08(日) 18:40:59
ウィンドウの大きさを変化させたとき
右下に配置したボタンがずっと右下にあるようにするにはどう設定すればいいですか?
150デフォルトの名無しさん:2009/02/08(日) 22:33:09
Grid使うとか,DockPanelで下にStackPanel { FlowDirection = LeftToRight }配置してその中に入れるとか
WinFormsのDockみたいな考え方はしない
151デフォルトの名無しさん:2009/02/08(日) 22:36:55
間違えたRightToLeftだった
152デフォルトの名無しさん:2009/02/09(月) 00:45:24
>>149
VerticalAlighnment="Bottom", "HorizontalAlignment="Right"
じゃだめなの?
153デフォルトの名無しさん:2009/02/09(月) 01:00:11
>>152
GridやPanelを組み合わせるのはよくやる
<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="*"/>
    <RowDefinition Height="30"/>
  </Grid.RowDefinitions>
  <Canvas Grid.Row="0"></Canvas>
  <StackPanel Grid.Row="1" Orientation="Horizontal" FlowDirection="RightToLeft">
    <Button Height="23" Name="button1" Width="75">Button1</Button>
    <Button Height="23" Name="button2" Width="75">Button2</Button>
  </StackPanel>
</Grid>
154デフォルトの名無しさん:2009/02/09(月) 01:00:58
>>149 だった訂正
155デフォルトの名無しさん:2009/02/09(月) 07:51:19
ARToolkit+DirectShow.NET+WPFのシンプルなスケルトンを作ってみた。
微妙にスレ違いかもしれないけどARToolkit関連のスレが消失しているのでここに書かせてくれ。

ちょっと前にミクさんが机の上で踊ったりする動画がニコ動で流行ったりして、
ARToolkitってのが流行ったじゃん。でも、このARToolkitって、3D描画はOpenGL、
UIはGLUTっていう融通が利かない仕様になってたり、必要なくてもOpenVRML
ライブラリが必要だったり、C++以外での開発に難があったり、と(俺には)敷居が高かった。

で、brains-N-brawnさんがARToolkitの改良版のARToolkitPlusのPInvoke可能なdllと
そのdllをPInvokeするC#で書いたラッパーコードを作って、さらに3D描画をWPFでやる
サンプルプログラムを
http://www.mperfect.net/wpfAugReal/
で公開したんだ。

俺はこれは使える!と思ったんだけど、brains-N-brawnさんのコードはARToolkitPlusの
色々な機能を試していて軽量なサンプルとは言い難い物だった。それで、自分でARToolkitPlus+DirectShow.NET+WPFの組み合わせの最低限の内容を持って十分に整理された
スケルトンコードを書いてみた。こいつは特別なライブラリを導入しなくてもVisual C# 2008
のみでビルド可能でしかも3D部分はWPFだし、WPFだからGUIとの連携も容易だしで、
これからARを始めようとする人にはサンプルとして比較的向いているかもしれないと思う。

そんなわけでコードは
http://sites.google.com/site/augmentedrealitytestingsite/download
ここに置いてある。あと、http://www.nicovideo.jp/watch/sm6074669にデモ動画を
アップしてみたけど、ミクさんとかの面白いネタがあるわけじゃない。

ニッチ市場向けの内容なのに長文ですまない。せっかくだから誰かが活用してくれるとうれしい。
156デフォルトの名無しさん:2009/02/09(月) 12:31:01
>>150,151,153,154
ありがとうございます
Dock、Dockの階層化でやってみて所望の動作ができることを確認しました

>>152
やってみ
157デフォルトの名無しさん:2009/02/09(月) 15:36:09
>>156
152です。
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
        <Button Width="120" Height="80"
                HorizontalAlignment="Right" VerticalAlignment="Bottom"
                Margin="0,0,10,10">Button</Button>
</Window>
じゃ駄目なの?と思ったんだけど、実際にはほかのコントロールも配置するんだから
実際にこんなコードにはしないね、確かに。
158デフォルトの名無しさん:2009/02/09(月) 18:56:36
>>117
なんでTipsみたいなものをもっと大量に用意しないんだろうな。
ネットであさったりあれこれ実験したり、(それこそこういうとこで聞いたり)に
多くの人間がどれだけ無用な時間を取られていることか。


割く人員が少ない(天下のMS様だがそういう金はなぜかない)とでもいうのなら、例えば適当な学生を複数雇って、
よくあるタイプのフリーソフトを指定して(この「ちょっと高機能な関数電卓ソフト」の類似品を1からWPFで作ってみてくれ)
わかりにくかった点はどこで、どう解決したのレポートを書かせて、
適当にリライトしてアップすればいい。
「ただでも習得しようと思っていたところ」だというので、
1本十万円とか1ページ1万円くらいでバイトとして喜んでやる奴幾らでもいるだろう。
節約したいならインドあたりの工科大の学生とかでいいわけで。

「WPFでこれらの見た目も機能もカラフルな数々の便利ソフトがすぐ出来ます。
全ソースと整理されたわかりやすい解説はこちらのページ群をご参照」
使う気になる人間・会社、ぐっと増えるんじゃないんだろうか。
そういうことをほとんどせず>>100
159デフォルトの名無しさん:2009/02/09(月) 19:10:27
金というか資本主義じゃなかったら今だにマンモス狩ってるだろjk
160デフォルトの名無しさん:2009/02/09(月) 19:16:25
技術オタク万歳
ゲーム廃人よりたちが悪い。
そこに付け込んだのがWPF
つかわなきゃいいだけ
161デフォルトの名無しさん:2009/02/09(月) 20:53:10
今日、渋谷の書店でWPFの書籍を買おうとした
かなり品ぞろえが悪かった(3,4冊くらいしかなかった)
WPF大丈夫なのか?
不安になって本買うのやめた
162デフォルトの名無しさん:2009/02/09(月) 21:10:00
まずは、WPFのなんたるかから勉強しろ。
哲学みたいなもんだ
163デフォルトの名無しさん:2009/02/09(月) 21:30:56
>>158 とか >>160-161 みたいのは、PHPやRubyだけやってればいいと思うよ。いやマジで。
164デフォルトの名無しさん:2009/02/09(月) 21:34:08
本買わなかっただけでその仕打ちorz
165デフォルトの名無しさん:2009/02/09(月) 22:09:11
いいんじゃん自分だけわかるみたいなこと言わせておけば
使う人少なければ開発続かないだけだし
166デフォルトの名無しさん:2009/02/09(月) 22:37:20
デスクトップUIの技術自体がもうそれほど重要視されない時代で、なおかつ、
MS系技術がやたらめったら嫌われる傾向の日本では、今後も流行ることないから、
日本語ドキュメントが山ほどあるみんなが使っているものを触らないと落ち着かない人であるとか、
マイナーなものに手を付けることを、今後(その技術のエッセンスがどっかで生き残るだけじゃなくて)
その製品自体が普及するか否かだけで不安になる人は、来ないほうがいいよと言ってあげただけ。
167デフォルトの名無しさん:2009/02/09(月) 22:44:29
サンプル山ほどあるだろ
168デフォルトの名無しさん:2009/02/09(月) 22:49:57
ほんとその通り。
UI技術に投資するなんて無駄なだけ。
もっとやるべきことがある
169デフォルトの名無しさん:2009/02/09(月) 23:24:52
勉強すればいいと思ってる馬鹿は大抵学歴が高い傾向にある
本質がわからない。辿りつけない層であり、GDPを上げるために仕込まれた人口比率の最も多い層でもある
プログラミングすらしないで目的を達成させることのほうが大事
お前の言っているやるべきこともたぶん糞
170デフォルトの名無しさん:2009/02/09(月) 23:36:27
>プログラミングすらしないで目的を達成させることのほうが大事
そりゃそうだが、プログラミングする以上はちゃんと勉強しろよ
171デフォルトの名無しさん:2009/02/09(月) 23:46:35
軍事技術が優先だったけど今はそいつらが集まって自動でアプリケーションを作りだす人工知能の開発に本気になってるから
それまで待ってろ。もう50年もすれば人がいらなくなる
172デフォルトの名無しさん:2009/02/09(月) 23:51:36
>>171
その頃ロシアでは ウォッカの生成方法を考えるAIの研究をしていた
173デフォルトの名無しさん:2009/02/10(火) 00:41:09
>>171
未来の二つの顔だな
あれの中ではナイスなAIのおかげで皆働かなくてよくなったとなってたが、もし実現しタラ超格差になるだけのような気がする。
174デフォルトの名無しさん:2009/02/10(火) 01:08:05
俺はWPFに賭ける
今すごい使い方を編み出せばMSからMVPをもらえるかも知れん
やってやるぜ
175デフォルトの名無しさん:2009/02/10(火) 01:18:21
>>174
釣り針垂らしてスレチの阿呆に餌を与えようとするなw
176デフォルトの名無しさん:2009/02/10(火) 08:14:56
>>155です。
せっかくなのでARToolkit+DShowNET+WPFでミクさんネタもやってみました。
まあ、このネタはもうやりつくされた感がありますが。ミクさんxamlにしたよー。疲れた。
 
http://www.nicovideo.jp/watch/sm6099189
http://sites.google.com/site/augmentedrealitytestingsite/download (コード)
 
UIとかあんまり関係ないプログラムになっているけれど、WPFってUIのフレームワーク
なのにビットマップエフェクトと3Dを宣伝文句にする姑息な事してきたわけだから、
3D描画に酷使してやれば本望だと。それに前にも書いたけど本家ARToolkitがGLUT
べったりなのに対してWPFを使っているのでこのコードをスケルトンとして作ったプログラム
ではバインディングなどのWPFの恩恵を受け易い。・・・はず。
177デフォルトの名無しさん:2009/02/10(火) 22:40:41
CAG for WPF 日本語版出てたのね。
ttp://msdn.microsoft.com/ja-jp/library/dd365013.aspx

178デフォルトの名無しさん:2009/02/10(火) 22:54:52
WriteableBitmapとBitmapなにがちがうですか?
179デフォルトの名無しさん:2009/02/11(水) 13:04:35
過疎ってる・・・

OpacitySliderはスライダーで、
 
RotateTransform rotate = new RotateTransform(0);
OpacitySlider.LayoutTransform = rotate;
 
DoubleAnimationUsingKeyFrames rotationAnimation
         = new System.Windows.Media.Animation.DoubleAnimationUsingKeyFrames();
rotationAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(0, TimeSpan.Zero));
rotationAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(360, TimeSpan.FromSeconds(5)));
 
Storyboard rotationStoryBoard = new Storyboard();
rotationStoryBoard.RepeatBehavior = RepeatBehavior.Forever;
rotationStoryBoard.Children.Add(rotationAnimation);
Storyboard.SetTarget(rotationAnimation, OpacitySlider);
Storyboard.SetTargetProperty(rotationAnimation,
       new PropertyPath("(FrameworkElement.LayoutTransform).(RotateTransform.Angle)"));
rotationStoryBoard.Begin();
 
でスライダーは回転するんだけど、
 
Storyboard.SetTarget(rotationAnimation, rotate);
Storyboard.SetTargetProperty(rotationAnimation, new PropertyPath("Angle"));
 
って変更すると回転しなくなる。何でだか分かる人いる?ちなみにスライダーを回転させたいん
じゃなくて、別の問題を単純化したらこうなったんだけど。
180デフォルトの名無しさん:2009/02/12(木) 04:21:50
>>179にレスが付かなくて(179は俺ね)連投みたいになってもうしわけないんだが、
Storyboardを使ってミクさんをアニメーションさせたので、またコードと動画を貼っておく。
 
http://sites.google.com/site/augmentedrealitytestingsite/download
http://www.nicovideo.jp/watch/sm6116619
http://www.nicovideo.jp/watch/sm6117872
 
WPFって一応今の流行だと思うんだけど、何でこんなに過疎ってるの?
181デフォルトの名無しさん:2009/02/12(木) 04:54:52
必ずしも必要なものが出現するとは限らない
社員を遊ばせておくぐらいなら何かを作らせた方がいいという時だってある
Vista、C#、WPFなんかがそれに当てはまる。
182デフォルトの名無しさん:2009/02/12(木) 07:14:01
>180
これって、描画領域になんか重ねたりとかも出来るの?
183デフォルトの名無しさん:2009/02/12(木) 07:31:00
>>182
Canvasの上にViewport3Dという構成だからCanvasに重ね描きするかその上に別のコンテナを乗っけてViewport3DとZオーダーを調節すれば良いんじゃない?ソースあるから適当にいじってみて。
184デフォルトの名無しさん:2009/02/12(木) 11:19:15
visual studioで app.xamlのstartupUriに指定されたウィンドウのxamlファイルの
ファイル名を変更しても、リファクタが効かず、毎回手で変更しないといけない
のですが、これってバグですか?
ファイル名ではなくクラス名としてのwindow1の名を変更したときにはちゃんと
xamlにも変更を反映してくれるので、技術的な問題と言うよりも、忘れられちゃった
としか思えないんですが。

みなさん、デフォルトの"window1.xaml"のまま使っているんでしょうか?
185デフォルトの名無しさん:2009/02/12(木) 11:27:29
>184
C#の仕様上はファイル名と中のクラスには何の関係もないんだから、
中に記述されていうクラスのクラス名を変えないとリファクタリングは
効かないに決まっている。ただ、その場合もxamlの記述までは置換され
なかったような記憶があるけれど。
186デフォルトの名無しさん:2009/02/12(木) 11:28:30
185です。
>>184
あ、その場合にはうまく行くのね。
187デフォルトの名無しさん:2009/02/12(木) 11:52:23
>>186

windows formのときは メインウィンドウのcsファイルの名前を変更すると
formクラスの名前も、formクラスの参照先も、designer.cs やresxファイル
の名前も全部自動で変えてくれたので、Form1.csをMainForm.csとか
自分のわかりやすい名前に変えるだけで手間いらずだったんですけどね…。

理想はwinformの時みたいに、Window1.csをMainWindow.csに変更したら
window1クラスの名前およびその参照先を全部MainWindowクラスにして、
app.xamlのstartupUriまで一気に変えてくれることなんですけどね。
今は ファイル名の変更、クラス名の変更、startupUriの変更と3ステップ必要
なのがにくい…。
188デフォルトの名無しさん:2009/02/12(木) 13:13:04
SuspendLayout, ResumeLayout, Invoke, Refresh, Update, Invalidatedと等価なのは何でしょう?
189デフォルトの名無しさん:2009/02/12(木) 16:08:23
すいません、「WPF」での「Dim IconB As Icon = Icon.FromHandle(Icon_hWnd)」はどこにあたるのでしょうか?
WPFでIconは全てImageに変わったというのは判ったのですが、アイコンハンドルから画像に変換することができませんでした。
もしかして、別の方法でハンドルからアイコン画像を変換する方法があったら教えてください。
よろしくお願いしますm(_ _)m
190デフォルトの名無しさん:2009/02/12(木) 16:33:13
>>187
186です。
Windows formsだとそうなんだ。知らなかった・・・。
IDEがスタイルを強要するみたいで個人的には嫌だけど、スタイルが受け入れられるなら便利では
あるね。それと多分JAVA出身の人なんかはファイル名と中身が関連付かないと気になるんだろうね。

そう言えば、System.Windows.Forms.Formを含んでいるcsファイルを開くと必ずデザイナが
開いて、csファイル毎にデザイナで開くかエディタで開くか設定できないのも個人的には嫌だった
なあ。しかも、Formを継承したクラスが一番初めにないとエラーが出たり。Windows Formsでは
C#とクラスライブラリの仕様だけでなくIDEの支援もセットでUIのフレームワークを形成して
いたんだよね。昔のVBと同じで。それがWPFで解決されてUIはC#から独立した言語/デザイナ
で定義するようになったのだから今さら言語仕様にない事をIDEが勝手な判断で手出しするのは
控えてくれた方が個人的にはうれしいなあ。x:Classなんて一属性に過ぎないのだからxamlの
ファイル名と勝手に関連付けられたりしない方がすっきりする。まあ個人的な見解ですが。
191>>189:2009/02/12(木) 16:49:52
自己解決しました。
192デフォルトの名無しさん:2009/02/12(木) 16:53:15
>>191
俺は知らない事なので、せっかくだから解決内容を書いてもらえるとうれしい。
193>>189:2009/02/12(木) 17:11:01
もっとスマートならいいのですが、本当に自己が満足しただけの解決なんです orz
WPFでフォームをホストしてから、その中で「FromHandle」を使っただけという残念な方法です。
恐らくWPF内でForm系列のものを利用できるような方法があると思うのですがMSDNにも載っていないようなので諦めました(爆
194デフォルトの名無しさん:2009/02/12(木) 17:14:34
195>>189:2009/02/12(木) 17:54:54
>>194さんありがとうございます!
何とか無事にアイコン取得できそうです。
Win32との相互というのは覚えとくべきですね
196デフォルトの名無しさん:2009/02/13(金) 00:33:09
SendToBackってどうすればいいですか?
197デフォルトの名無しさん:2009/02/13(金) 05:52:26
最近、WPFが遂に流行ってきた気がする
198デフォルトの名無しさん:2009/02/13(金) 06:29:43
ない
199デフォルトの名無しさん:2009/02/13(金) 21:04:43
また、プログラミング言語ごとの募集要項での平均年収について、2007年から2008年にかけての上昇
額ランキングを見ると、C#が前年比66万6000円増と大幅に上昇した。2008年における平均年収ランキン
グでも1位となっている。

ttp://headlines.yahoo.co.jp/hl?a=20090213-00000000-zdn_ait-sci

ついに来たな、時代が俺に追いついた
200デフォルトの名無しさん:2009/02/13(金) 21:15:54
まじかああああああああああああ
ついにきたあああああああああああああ
201デフォルトの名無しさん:2009/02/13(金) 22:49:06
>>199
ちょっと前と比べてかなり速くなったしドライバとかでもない限り今わざわざCやC++でやる必要もなくなってきたしな
ASP.NETやSilverlightもあるしMonoを使えばMacでもLinuxでもUnixでも動くしバックにマイクロソフトがいる
何が言いたいのかって言うと今までが安すぎたんじゃねってこと


ついでにこれ貼っておきますね
http://japan.zdnet.com/news/internet/story/0,2000056185,20388173,00.htm
202デフォルトの名無しさん:2009/02/13(金) 23:05:22
Miguel、GNOMEやってたときはかなり偏屈なあんちゃんだったように思うが
なんかもう完全にMSの飼い犬になってるな。そのうちNovellやめて
MSに入社するんじゃないか?
203デフォルトの名無しさん:2009/02/13(金) 23:25:04
>>202
年を重ねるうちに丸くなったかお金のおいしさをしったかのどっちかだろうな
204デフォルトの名無しさん:2009/02/14(土) 02:03:55
クラスライブラリ(dll)からWPFのwindowを作成して表示するには
どうしたらいいんでしょうか?

winformなら「新しい項目の追加」でformを追加しておいてnewしてshowすれば
表示できましたが、WPFだとそもそもユーザーコントロールしか追加項目
に現れてきませんが、そういうことはそもそもできないんでしょうか?。
205デフォルトの名無しさん:2009/02/14(土) 07:59:16
WPF試して見ようと思ったんですが、
3.5のSP1インストールできないんだがどうすればいいんですか・・・?

[02/14/09,05:10:52] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for component Microsoft .NET Framework 2.0a. MSI returned error code 1603
[02/14/09,05:11:18] WapUI: [2] DepCheck indicates Microsoft .NET Framework 2.0a is not installed.
[02/14/09,05:36:58] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for component Microsoft .NET Framework 2.0a. MSI returned error code 1603
[02/14/09,05:37:28] WapUI: [2] DepCheck indicates Microsoft .NET Framework 2.0a is not installed.
[02/14/09,07:56:44] Microsoft .NET Framework 3.5 'package': [2] Error: Installation failed for component Microsoft .NET Framework 3.5 'package'. MSI returned error code 1603
[02/14/09,07:56:54] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.5 'package' is not installed.

よろしくお願い致します。
206デフォルトの名無しさん:2009/02/14(土) 11:49:00
エラー文抜き出して検索すれば早いだろうに。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1115761341
それにスレチな。
207デフォルトの名無しさん:2009/02/14(土) 13:05:02
>>204

自己解決しました。
いったんUserControlを新規項目として追加して
UserControlをWindowにxaml側、cs側両方で書き換えたら
普通に new →show()で表示することができました。

でもなんでIDEから簡単にwindow追加できないんだろう。
208デフォルトの名無しさん:2009/02/14(土) 13:22:51
>>206
それはもうやりました・・
209デフォルトの名無しさん:2009/02/15(日) 06:33:21
ARToolkit+WPFで今度はミクを溢れ出させてみました(というか簡単な物理シミュレーション)。
http://www.nicovideo.jp/watch/sm6155021
http://sites.google.com/site/augmentedrealitytestingsite/download   (ソース:ARWithWPFMikuEmitted.zip)

WPFの3Dにもようやく慣れてきた・・・
210デフォルトの名無しさん:2009/02/15(日) 14:47:42
ListBoxの選択色を変えるにはどうしたらいい?
211デフォルトの名無しさん:2009/02/15(日) 15:59:42
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.listbox.itemcontainerstyle(VS.95).aspx
このプロパティに、TemplateプロパティにListboxItemをターゲットとするコントロールテンプレートを割り当てるSetterを含むスタイルを与えてやればよい、と思う。そのコントロールテンプレートの中でTriggerを設定するのね。

ListViewの場合でしかやった事がないので外してるかもしれないけど。
212211:2009/02/15(日) 16:11:46
じゃなかった。
確か、ItemContainerStyleプロパティに割り当てるスタイル中で、<Style.Triggers Property="IsSelected" ...みたいにやれば良いという単純な話だった気がする。

何かの理由でデフォルトのコントロールスタイル中の同様のトリガーが優先されてしまうために
コントロールテンプレートまで書き換えた事があったんだけど、多分普通は↑で済むと思う。
213デフォルトの名無しさん:2009/02/15(日) 16:18:26
>>211,212
試してみる。ありがとー
214デフォルトの名無しさん:2009/02/15(日) 16:18:31
もっと簡単にできる
wpf listview selection colorでぐぐったらすぐ出てくるよ
215211:2009/02/15(日) 16:31:34
試してみたけど、やっぱりTemplateプロパティを書き換えるのも必要だね。
<ListBox>
    <ListBoxItem>Apple</ListBoxItem>
    <ListBoxItem>Orange</ListBoxItem>
    <ListBoxItem>Grape</ListBoxItem>
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
216211:2009/02/15(日) 16:36:10
                        <Border Name="Bd"
                             Background="{TemplateBinding Background}"
                             BorderBrush="{TemplateBinding BorderBrush}"
                             BorderThickness="{TemplateBinding BorderThickness}"
                             Padding="{TemplateBinding Padding}"
                             SnapsToDevicePixels="true">
                            <ContentPresenter
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
217211:2009/02/15(日) 16:37:15
>>214
あれ、俺道化?まあとりあえず最後まで書くので必要なら使って。
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="true">
                    <Setter Property="Background" Value="LimeGreen" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
コントロールテンプレートはPresentationFramework.Classic.dllからReflectorのBAML Viewewプラグインを使って抜き出して、トリガー関係をごっそり削除したもの。関係ないところまで消しちゃっている(IsEnabledのトリガーとか)ので、実際にはもう少し色々試してみて。
218デフォルトの名無しさん:2009/02/16(月) 00:55:57
リアルタイムで受信したデータに応じて色々表示変えたいんだが、データに応じてUIElementを色々入れ替えたりすると言うことでよいのかな?Rectangleの色だけを変えるとかってできましたっけ?
219デフォルトの名無しさん:2009/02/16(月) 12:51:56
Vistaで動かすともっさり、XPだとまあまあなアプリ
Windows7だとどうなりますか?快適に動くでしょうか?
220デフォルトの名無しさん:2009/02/16(月) 13:03:24
一般論として最適化はされているみたいだね。

俺は、古いPCにWindows 7を入れたので細かいパフォーマンスの比較はできないけれど、
WPFアプリの起動は確実に速くなっている。
221デフォルトの名無しさん:2009/02/16(月) 18:17:05
>>214って結局どんな方法?
ググって見たけど、デフォルトのテンプレートが使っているリソースのキー名で
ブラシをListBoxのスコープのリソースで定義する方法しか出なかった。

チートっぽいけどこれ?
222デフォルトの名無しさん:2009/02/16(月) 19:10:53
>>218
Rectangle.Fill変更すれば変わるっしょ
223デフォルトの名無しさん:2009/02/16(月) 23:30:51
>>222
グラフのようなもの変えるんだとLineElementをつくり変えて入れ替えないと駄目なのかね?
とりあえずうごくんだがなんか無駄な子としてるような気が・・・
224デフォルトの名無しさん:2009/02/17(火) 07:35:15
折れ線変化させたりする程度なら、
Polyline置いてdependency property使えば瞬殺だと思うんだが
225デフォルトの名無しさん:2009/02/17(火) 18:01:40
WPFでアンチエイリアシングを無効にする方法
ttp://blogs.msdn.com/hiroyuk/archive/2009/02/16/9425120.aspx
>これを無効にするには、RenderOptions.EdgeMode="Aliased" を使います。

これってフォントには応用できない?単純にテキストボックスに対してこれやってもなんも変わんなかった
226デフォルトの名無しさん:2009/02/17(火) 18:10:32
http://msdn.microsoft.com/ja-jp/library/aa970908.aspx#guidelines
リンク先の直前に
>Windows Presentation Foundation (WPF) は常にアンチエイリアスされたテキストを
>生成します。生成されたテキストが静的な場合は、ピクセル スナップされます。これに
>より、グリフがピクセルグリッド上に直接配置されて、アンチエイリアスされたテキス
>トの外観が鮮明になり、テキストがよりクリアになります。ただし、Windows Presen
>tation Foundation (WPF) が、スクロール、スケーリング、アニメーション化された変
>換など、アニメーション的な動きを検出すると、そのような動きが完了するまでピクセ
>ルスナップはオフになります。アニメーションやスクロールの動きが完了すると、ピク
>セル スナップがゆっくりと復活します。
だそうなので、アンチエイリアスはするけれど、ぼやけないように気は使ってくれるみたい。
だから気にしないで良いんじゃない?
227デフォルトの名無しさん:2009/02/17(火) 18:37:37
気になっちゃうんだもん・・・ WindowsFormsHost 使えばいいんだけどさ
228デフォルトの名無しさん:2009/02/17(火) 18:42:45
俺はむしろ、ClearType万歳、アンチエイリアス万歳!だけどなあ。
229デフォルトの名無しさん:2009/02/17(火) 18:49:20
さすがにビットマップフォント使えばアンチエイリアシングされないと思わない?
230デフォルトの名無しさん:2009/02/17(火) 18:55:04
Bitmapに描画すればアンチエイリアスはかかるかも知れないけど
ClearTypeにならないんじゃね?
RGBディスプレイで作った画像がBGRディスプレイで見ると悲惨になるような設計されてないはずだし。
231デフォルトの名無しさん:2009/02/17(火) 20:19:01
http://blogs.msdn.com/adam_nathan/archive/2005/10/24/using-com-interop-to-create-a-wpf-visualization-for-windows-media-player.aspx
ここからダウンロードできるwpfwmp.zipが壊れているんだけど、誰か壊れていないやつを
ダウンロードしていて、今も持っているって人いない?はじめから壊れていたらどうしようも
ないし、持っている人が偶々このスレ見ているなんてそもそも可能性がすげー少ない話なんだが。

Adam Nahanさんにも怪しい英語でメールしたけど、返事が来ない・・・

C#+WPFでWMPの視覚エフェクトが作れるってすごく面白そうなんだけど、COMの知識がないから
COM InterOpもわけわかめなんだよね。一週間待ってwpfwmp.zipが手に入らなかったら勉強
してみる。

それまでに、
>Make your class implement the IWMPEffects COM interface.
>I manually defined this interface in C# based on the IDL definition in the Media Player SDK.
をわざわざやってくれる奇特な人も募集中。Windows Media Player 10 SDKは
http://msdn.microsoft.com/en-us/windowsmedia/bb190309.aspx
から手に入るみたい。
232デフォルトの名無しさん:2009/02/17(火) 20:29:19
idlがあるならmidl.exeとtlbimp.exeでdll作れよ
233231:2009/02/17(火) 21:11:56
>232
ちょっと調べて知恵をつけて
midl /newtlb effects.idl
してみたんだけど、effects_i.c, effects_p.c, dlldata.cしかできない・・・

これ以上は初心者板向けになりそうだから、一週間たってwpfwmp.zipが手に入っていなかったら
まじめにCOMを勉強するわ。
234デフォルトの名無しさん:2009/02/17(火) 21:44:31
>>224
殺しちゃうのかよw
235デフォルトの名無しさん:2009/02/17(火) 21:46:25
ScrollViewer のインスタンスの垂直スクロールバーが
一番下まで来たかどうかを調べる方法って、どうすればいいんでしたっけ?

やりたいことは
ScrollViewer に対して、コントロール内で PageDown() メソッドを
呼んだあと、もうこれ以上ページを下におろすことができないかどうかを知りたい。
でもなんだかうまくいきません。
ぐぐっても出てこないし、歯がゆい。
もしご存知でしたら教えてください。。。。。。
236デフォルトの名無しさん:2009/02/17(火) 22:51:36
WPF 勉強中なんですが、
Windows に Image を張って、
そこに、jpg 画像ファイルを読み込みました。

この画像ファイルに、文字列を書き込みをしたいんですが、
どのようにしたらよいでしょうか?

Image.Source から、DrawingContext を生成してなるのかな
と思いますが、やりかたがわかりませんでした。
237デフォルトの名無しさん:2009/02/17(火) 22:54:21
画像にじゃなくて画像ファイルに?
238デフォルトの名無しさん:2009/02/17(火) 22:56:16
画像に、です
すいません
239デフォルトの名無しさん:2009/02/17(火) 23:02:28
>>235
HorizontalOffset/VerticalOffsetとScrollableWidth/ScrollableHeight
240デフォルトの名無しさん:2009/02/17(火) 23:02:51
>>236
なんでもかんでもGraphcsで描くWinFormsとは根本的に考え方が違うんだよな
特殊な場合を除いて基本的にDrawingContextは使わない
DrawingVisual作ってImageDrawingやGlyphRunDrawingを追加して
RenderTargetBitmap.Renderが正当かな
241デフォルトの名無しさん:2009/02/17(火) 23:09:31
Canvas使うとかAdorner使うとか色々あるぜ
242デフォルトの名無しさん:2009/02/17(火) 23:15:13
いずれにしても元のImageSourceに直接描くのは無理
>>236じゃないけど,最終的にRenderTargetBitmap以外の方法はあるのか知りたい
243デフォルトの名無しさん:2009/02/17(火) 23:24:25
WPFのコントロールテンプレートで迷ってしまいました、どうもラジオボックスの連動がうまく行きません。

<Window.Resources>
<Style TargetType="RadioButton" x:Key="Test_Style">
<Setter Property="RadioButton.FontSize" Value="20"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<StackPanel>
<RadioButton x:Name="tet" Content="!" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="tet" Property="IsChecked" Value="True" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="tet" Property="IsChecked" Value="False" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<RadioButton x:Name="RadioButton_1" Style="{StaticResource Test_Style}" Content="RadioButton__1" IsChecked="True" />
<RadioButton x:Name="RadioButton_2" Content="RadioButton__2" IsChecked="False" />
</StackPanel>...
244デフォルトの名無しさん:2009/02/17(火) 23:26:56
>>242
ImageDrawingは?
何をもって最終とするのか知らんが
245242:2009/02/17(火) 23:30:47
元の画像に文字を合成したImageSourceを得たいんでしょ
その完成したImageSourceを作る段階
246>>189:2009/02/17(火) 23:30:52
やりたいことは、普通にフォームにラジオボックスに2つ張った状態を目標にしています。
通常ならどちらか一方がチェックされれば、もう片方はチェックが外れるようにしたいです。

この方法では一度ならラジオボックスのチェックがどちらか一方に付くようになるのですが、
もう一度チェックしなおすと両方がチェックされた状態になってしまいます。
プロパティの値も実際に見てみたのですが、一度だけ成功していますが、それ以降は値が変化していないということになりました。

Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
MsgBox(Me.RadioButton_1.IsChecked & vbCrLf & Me.RadioButton_2.IsChecked)
End Sub
true:False

Private Sub RadioButton_2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton_2.Click
MsgBox(Me.RadioButton_1.IsChecked & vbCrLf & Me.RadioButton_2.IsChecked)
End Sub
False:True

Private Sub RadioButton_1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles RadioButton_1.Click
MsgBox(Me.RadioButton_1.IsChecked & vbCrLf & Me.RadioButton_2.IsEnabled)
End Sub
True:False
(ここで見た目は両方ともチェックされた状態になってしまうが、値は希望通り)
247デフォルトの名無しさん:2009/02/17(火) 23:32:07
>>246
コレハンミスです。

よろしくお願いします m(_ _)m
248236:2009/02/18(水) 00:01:49
RenderTargetBitmap でいけそうです。
ありがとうございました。

>>245
そのとおりです。

238は俺じゃないんだが・・・。
書き込んだのを忘れてるんだろうか。
249244:2009/02/18(水) 00:08:35
DrawingImageだった 名前が紛らわしいよまったく
250デフォルトの名無しさん:2009/02/18(水) 00:23:35
DrawingImageは保存できなくね?
251デフォルトの名無しさん:2009/02/18(水) 00:25:49
>>248
その年でもう健忘症か?
ほっとくと中川みたいになるぞ
病院いってこい
252デフォルトの名無しさん:2009/02/18(水) 00:37:56
保存は条件じゃないっしょ
253デフォルトの名無しさん:2009/02/18(水) 03:22:56
コードでResourcesを設定して、XAMLからStaticResourceとして読み込んでいるんだけど
デザイナ側はコードで設定される事を知らないので
>読み込みで問題が発生しました
>デザイナを読み込む前に修正しなければならないエラーがドキュメントに含まれています。エラーを修正してからデザイナを再度読み込んでください。
と言われてデザイナが読み込まれない。

このケースだとXAMLでリソースを定義してDynamicResourceとして読み込ませておいて、InitializeComponent後に設定するのが正攻法だと思うけど
<Window.Resources>
  <app:Test x:Key="Test"/>
<Window.Resources>
この定義方法だと、勝手にインスタンス作ろうとして引数0のコンストラクタがないとエラーになってしまう。

デザイナにコード側で設定されるって事を教えるにはどうすべきなのでしょうか。
254デフォルトの名無しさん:2009/02/18(水) 09:30:38
ObjectDataProvider使えばコンストラクタに引数渡したり、メソッドの結果にバインドできるのか。
255231:2009/02/18(水) 12:53:18
>232さんの助言のお陰で、わりと上手く行っています。Adam Nahanさんからの返信はまだ
ありませんが、どうやら自力でできそうです。>232さん、ありがとうございました。
256デフォルトの名無しさん:2009/02/18(水) 13:11:13
WPFでGDI風にテキスト書かせたりするのはどうすればいいですか?
ちなみにxamlはつかってません
C#でしこしこ書いてます
257デフォルトの名無しさん:2009/02/18(水) 13:21:49
コンテキスト.DrawString("a")みたいなの?
OnRenderをオーバーライドすればそれっぽいことができるけど激しく非推奨
要素を置いていくだけで同じことできるしパフォーマンスも良くないし何よりWPFらしくない
258デフォルトの名無しさん:2009/02/18(水) 13:25:51
初心者でよくわかってないんです
どうすればいいでしょう?
データ更新が多いのでできるだけ早く描画したいのですが
259デフォルトの名無しさん:2009/02/18(水) 13:31:38
頻繁にOnRenderで更新するのは最悪
普通に要素を置いていったあとはそれらのプロパティの変更だけですませて
できるだけ要素の入れ替えは行わない
画面に表示するだけならDrawing系の要素を使うと軽い
260デフォルトの名無しさん:2009/02/18(水) 13:41:41
うー
Drawing系の要素って何?orz
261デフォルトの名無しさん:2009/02/18(水) 13:47:07
http://msdn.microsoft.com/ja-jp/library/aa970683.aspx
このへん読め
理解できないなら理解できるようになってから気にすればいい
262>>243:2009/02/18(水) 15:42:07
何の参考にもならないと思いますが、何とか希望通りの動きをするようになったのでメモしておきます。

<Window.Resources>
<ControlTemplate x:Key="RadioButtonControlTemplate1" TargetType="{x:Type RadioButton}">
<StackPanel>
<Label Content="{Binding RelativeSource={RelativeSource AncestorType={x:Type RadioButton}}, Path=IsChecked}" />
</StackPanel>
</ControlTemplate>
</Window.Resources>
<StackPanel x:Name="LayoutRoot" VerticalAlignment="Center" HorizontalAlignment="Center">
<RadioButton Content="RadioButton" Template="{DynamicResource RadioButtonControlTemplate1}" />
<RadioButton Content="RadioButton" Template="{DynamicResource RadioButtonControlTemplate1}" IsChecked="True" x:Name="radioButton" />
</StackPanel>
263デフォルトの名無しさん:2009/02/18(水) 15:42:50
わからん
Drawing系の要素、なんて言葉どこにもでてこない
textBlockとかいうのつかったほうがはやいってことか?
264デフォルトの名無しさん:2009/02/18(水) 15:47:13
System.Windows.Media.Drawingクラス(の派生クラス)
画面に描画するにはDrawingVisualを使う
265235:2009/02/18(水) 18:03:32
>239
レスありがとうございます。
各プロパティで試してみたのですが、うまくいかない原因は別にあったようです。
実際にスクロールバーの制御をおこなうときに、スクロールバーが表示されていなかったという
何ともお粗末な原因でした。
穴があったら入ってゆっくり眠りたい気持ちです。
266デフォルトの名無しさん:2009/02/18(水) 23:41:20
なんでwpfのスレが伸びまくるんだろうか?
267デフォルトの名無しさん:2009/02/19(木) 00:04:13
いいドキュメントがないから
268デフォルトの名無しさん:2009/02/19(木) 02:58:30
本もほとんどないしな
269デフォルトの名無しさん:2009/02/19(木) 10:17:53
決定版が一冊出ればそれでいいんだけどな
270デフォルトの名無しさん:2009/02/19(木) 15:11:22
決定版ドキュメントが一冊出れば飛び付くんだが、最近の有力なエンジニアは
自ブログの充実ばかりで、書籍の執筆熱が冷めている上に、インターネットに
押されている出版社も支援が薄い。

出し惜しみ+買い控えの無限ループ → 書籍出版の衰退
271>>189:2009/02/19(木) 15:58:19
Blendが自動でコード補助とかしてくれたらわかるけど、ヒントすら出てくれないからヘコしんどい
272デフォルトの名無しさん:2009/02/19(木) 16:16:14
MSDNが使いづらい
探したいものがあって検索してもなかなか見つからない
数十分かけてやっと見つかったと思ったら大雑把にしか書いてなくて迷うこともある

>>271
ヒントでねーわ選択画面ねーわで結局本片手にやるはめになるよな
273デフォルトの名無しさん:2009/02/19(木) 16:20:57
IntelliSenseが最強の教師って状況はおかしいよな。
274デフォルトの名無しさん:2009/02/19(木) 21:38:21
Silverlightのドキュメントなんかもっと酷いよ
275デフォルトの名無しさん:2009/02/19(木) 22:10:32
MSDNで直接探すのは、どこに書いてあるか見当がつく場合ぐらいだなぁ
特定のクラスについて調べたいとか、この辺に探してるやつがある筈 と思う時ぐらい

調べる対象が漠然としてる時は、ググった方が早いね。
276デフォルトの名無しさん:2009/02/19(木) 22:43:21
>>275
クラス名でググった方が早くね?
http://www.google.co.jp/search?q=System.Diagnostics
277デフォルトの名無しさん:2009/02/19(木) 23:48:27
WPFをMicrosoft Blendで作るのと、Visual Studioで作るのって何が違うの?
分裂したメリット、デメリットが判らない。

自分的にはVisual Studioではコード候補が出るから何とかなる気もする、
Blendは即コンパイル。
こんな感じ?
278デフォルトの名無しさん:2009/02/20(金) 00:06:39
プログラマーとデザイナーが同時に作業できるようにってことだったと思うけど
タダで配るならともかくこれは完全に失敗だよな
279デフォルトの名無しさん:2009/02/20(金) 01:18:31
Blendがもっと手軽にコントロールテンプレートを弄り倒せるツールだったらヤル気がでた。
280デフォルトの名無しさん:2009/02/20(金) 01:28:46
>>277
多分Blendに存在価値がないのが問題
どう見たってプログラム素人が手ェ出せるUIじゃないだろ・・・
281デフォルトの名無しさん:2009/02/20(金) 02:25:33
>>280
xamlを意識しなければそれなりに使えそうだけどなぁ
ただ、デザイナじゃないからblendは使いこなせなかったけどw
とりあえず、フォーカスするとキモい挙動をする(グラデーションが動く)ボタンなら簡単に量産できると思う。
(センスのない自分が嫌になれるよ!)
282デフォルトの名無しさん:2009/02/20(金) 07:43:01
色とかかえたりするにはまぁいいんだけどね・・・
何つーかもうちょっと全体的に使いやすくなって欲しいんだよなぁ
FLASH用のツール作ってた人なんだろ、これ作ったの。
283デフォルトの名無しさん:2009/02/20(金) 08:52:06
xamlとC#の変換ツールないですか?
いきなりxaml使えといわれても何やってるのかよくわからないものは気持ち悪くてさわれない
284デフォルトの名無しさん:2009/02/20(金) 09:37:19
>>283
それを言うならxamlとC++の変換じゃないの?
C#から使うものだけど実装自体をC#でやってるわけじゃなかろう。

俺は詳しくないからxamlをパースしたあとC#に変換しているのか
C++で直接動かしているのか詳しくは知らないが、
283はC#のメモリ管理が内部で何やってるかわからんから気持ち悪いとか言って
わざわざC++で書いたりするわけじゃないんだろう?

ああいう記法でラッピングした以上制約が色々あるから気になるならWindowsFormでやればいいし
そこまで潔癖に気にするやつが使う代物でもないと思う。
285デフォルトの名無しさん:2009/02/20(金) 10:11:12
むしろaspxだろうJK
286デフォルトの名無しさん:2009/02/20(金) 13:02:03
>>284
これはひどい

> C#のメモリ管理が内部で何やってるかわからんから気持ち悪いとか言って
CGの動作原理を理解すれば気持ち悪くなくなる

同様に、XAMLとC#の対応関係を理解すれば、XAMLに対する気持ち悪さも消えるだろう

対応関係はDependencyPropertyの解説などを見れば、だんだんわかってくるが、
てっとり早く理解する為に変換ツールが欲しくなるのも理解できる

けど、変換ツールは見たことないな
ライブラリはXAMLをパースして、(ILを出力せずに)直接オブジェクトを生成しちゃってるし
287デフォルトの名無しさん:2009/02/20(金) 13:53:48
XAMLがC#のコードとして表示されてるのを見たことある気がするんだが、
VisualStudioにそういう機能なかったっけ?
288デフォルトの名無しさん:2009/02/20(金) 14:08:35
アプリケーション定義のxamlならobjフォルダにC#コードが出力されるけど。
289デフォルトの名無しさん:2009/02/20(金) 14:15:58
<x:Code>
```
</x:Code>
のことを言ってたりする?
これならXAMLの中にそのまま記述できるけど?
290デフォルトの名無しさん:2009/02/20(金) 14:34:26
>>288
ああ、それだった。たいした情報はないのな。
291デフォルトの名無しさん:2009/02/20(金) 16:03:42
>290
StartupUriのxamlをフレームワークのAPI使ってロードするだけのコードだからね。
292デフォルトの名無しさん:2009/02/20(金) 21:04:52
>>283はXAMLがどうC#と関連づけられるか分からないから気持ち悪いと言っているんであって、
>>284が言うようなC#のメモリ管理なんて言ってないだろうが。

XAMLで書けることはC#で書けるんだから、C#がわかるなら気持ち悪いなんて事は無いだろうに。
293284:2009/02/20(金) 22:05:03
すまん、俺がボケかましてただけだった。
milcore直接たたいてるのはWPFでXAMLじゃなかったわな。
直接たたいてるとしたらアンマネージドだからああいう物言いになったと。

メモリ管理どーのってのはあくまでも例え。286は例えとわかってくれているが292には通じんかったようだ。
GCは挙動わかっててさえ気持ち悪いとか非効率とかよく言われるものなのに、
まずGC積んでるC#自体を気持ち悪がらないのにXAML程度を気持ち悪がる理由がわからんって事。
例え悪くてすまんな、低脳なんで。

ただ、XAMLで書けることはC#で書けるというのは大抵書いてあることだけど
そのままパースして翻訳されてると俺は思ってないし、
そう考えると実際に内部で何やられてるかわからんと言う意味で
283が気持ち悪がってるのかなとは思い直した。
294デフォルトの名無しさん:2009/02/20(金) 22:12:51
milcoreは最終的な一番低いレベルの描画に使ってるだけ
XAMLをパースしてるのはフレームワークのマネージコード
295デフォルトの名無しさん:2009/02/20(金) 22:20:51
WPFは最終的な描画以外は全部C#で書かれてるよ
SilverlightはアンマネージC++にごくごく薄いマネージドの皮をかぶせただけ
296デフォルトの名無しさん:2009/02/20(金) 22:28:05
>>294,295
把握した。
297デフォルトの名無しさん:2009/02/21(土) 00:04:48
マイクロソフトの人がこのスレみて反省してくれればいいのだが
298デフォルトの名無しさん:2009/02/21(土) 01:52:02
マネージからmilcoreたたければなー
299デフォルトの名無しさん:2009/02/21(土) 09:39:09
299
300デフォルトの名無しさん:2009/02/21(土) 09:39:45
300
301デフォルトの名無しさん:2009/02/22(日) 22:20:19
Dispatcher.InvokeするとTargetInvocationExceptionが起きるんですが、どうすれば回避できるのでしょう?
302デフォルトの名無しさん:2009/02/22(日) 22:25:45
中身(InnerException)は?
303デフォルトの名無しさん:2009/02/22(日) 22:27:50
ごめんなさい、知識なさ過ぎて答えられません
InnerExceptionとは何でしょう?
304デフォルトの名無しさん:2009/02/22(日) 22:48:19
ああ、TargetInvocationExceptionっていうのは呼び出した先でエラーが起きてるってことなのですか?
検索してもさっぱりわかりませんでした
それでは調べてみようと呼びだしてるメソッドの中身をtry catchで囲んでみたらなぜかエラーが起きなくなりました
なにがおきてるんでしょう?
305デフォルトの名無しさん:2009/02/22(日) 22:56:08
try{
ほにゃらら
}catch(Exception e){
MessageBox.Show(e.InnerException.ToString());
}
してみたら?ていうか、キャッチしなかった場合にデバッグ環境で表示されるダイアログでも
InnerExceptionは見れるけど。
306デフォルトの名無しさん:2009/02/22(日) 22:58:33
ごめんなさい、エラーおきてました
時間なくてあせってて
原因もわかりました
お騒がせしました
お付き合いありがとうございました
では
307デフォルトの名無しさん:2009/02/22(日) 23:14:02
e.ToString() したら InnerException も連鎖的に出してくれたような
308デフォルトの名無しさん:2009/02/22(日) 23:23:18
TargetInvocationExceptionが起きると出してくれないんですよ
だから何が起きてるのかさっぱりわからなくてパニくりました
はずかしい
309デフォルトの名無しさん:2009/02/23(月) 01:12:03
違うスレッドで起きてる例外だからスタックトレースとしては連続してないってだけだろ。
ちゃんと例外の発生したスレッドというかメインスレッド側で処理しておけ。
310デフォルトの名無しさん:2009/02/23(月) 11:55:11
Blendがうんこ過ぎてメモ帳以下ですが、私の使い方が間違っているものだと思うので質問します。

BlendでBindingするときに、勝手に全ての対象へ「x:Name」を定義してしまうのですが、
デフォで親参照とかにする設定などありますか?
311デフォルトの名無しさん:2009/02/23(月) 12:51:58
xamlっていったんC#のコードに変換してからコンパイルされるんですか?
コードビハインドのコンストラクタにあるInitializeComponent()の定義を参照
すると、window1.g.csみたいなファイルが生成されて、xamlを置き換えた
windows forms時代のようなコードが見られるんですが。

そうやってるなら、いっそのことxamlなしでc#オンリーの選択肢もほしい。
RADツール使うなら、xamlだろうとc#だろうと、かわらんし。

>>283
激しく同意だ。xamlはとにかく裏で何やってるのかさっぱりわからんのが
気持ち悪い。
さっきのInitializeComponent()メソッドなんて定義がどこにもないのに、
使えることになっている。自動生成されたcsファイルいじったらどう反映される
んかねえ。  だいたい、プログラムのエントリポイントはいったいどこにある
んだ??? いくらなんでも隠蔽しすぎなんじゃないのかね、wpfは。
312デフォルトの名無しさん:2009/02/23(月) 13:03:25
根本的に間違ってる
XAMLはC#のコードに変換しているわけではない
WPF自身が実行時に直接XAMLをパースして組み立ててる
window1.g.csはXAMLを読み込む処理を呼び出して
読み込まれた要素を対応するC#のフィールドに代入するためだけに生成される
313デフォルトの名無しさん:2009/02/23(月) 13:11:51
C#だけでも作れるよね?
xaml使ったのとC#だけのもの、初期化処理は違うとしてもほぼ等価な動作すると考えていいの?
314デフォルトの名無しさん:2009/02/23(月) 13:25:07
それはもちろんそうだけど
RADで生成するからxamlだろうとC#だろうとかわらんというなら
わざわざC#を吐かせるメリットがない
言語別に対応しないといけないし動的に読み込むこともできないし
人間が読んだり修正したりするのも難しいし
RADが人間による修正に対応するのも難しい
315デフォルトの名無しさん:2009/02/23(月) 19:33:27
>>311
XAMLからコントロールの論理ツリーが生成される。〜.g.cs のC#コードはそれを参照するため。
それと、ASP.NETと違ってコントロールへはIDによるアクセスじゃなくなった。

> xamlはとにかく裏で何やってるのかさっぱりわからんのが気持ち悪い。
裏とか表ってw
これはW*Fの基本理念の一つで、「1つのプログラム言語やコードで何でもでき、そして何でもやる。」
という旧態のプログラマ的な思想から脱却して、高度にモデル化され、そして機能と役目の分担が
進んだ結果、こう変化したんだよ。

>>313
できるよ。 過去の資産であるWindowsFormライクなプログラミングスタイルも継承しているからね。
過去の資産=過去の頭脳w ・・・過去の技術者を一気に冷たく捨てないところがマイクロソフト。
316デフォルトの名無しさん:2009/02/23(月) 19:38:21
すごく…
胡散臭いです
317デフォルトの名無しさん:2009/02/23(月) 20:08:53
UI専用の言語とその構造に基づいたデザイナという組み合わせは、C#のコードをドキュメント化
されていない流儀で自動生成するブラックボックスなデザイナよりも圧倒的に優れていると思う。
Windows Formsは昔のVisual Basicのノリから抜け出せていなかった。

それに、コンテナの配置はxamlでやって、コントロールの動的生成をコードでやって、とか、
役割分担のさじ加減をプログラマがコントロールし易い(Windows Formsでもできるけど)WPF
の魅力だと思う。

xamlはxmlベースの構造的な言語だから、不明瞭なのは直接の子要素がChildrenプロパティなのか
Contentsプロパティなのか、くらいだけで、同等のコードをC#で書くのってとんでもなく楽。
318デフォルトの名無しさん:2009/02/23(月) 20:28:48
いやおまえら、partial classくらい知ってろよ。
2.0からずっと、UIとイベントの定義は一緒だろうが。

WindowsFormsとXAML、どっちも同じ。ASP.NETも。
XAMLはC#で全く同じものが書ける。これは最終的に一つのクラスになるから。
複数のソースで一つのクラスが定義できるのがpartial class。XAMLのように
言語が異なるのは既にASP.NETでやっている。
319デフォルトの名無しさん:2009/02/23(月) 20:38:49
ここまでの議論の参加者で*.xaml.csでpartial クラスの機能が使われている事を知らない奴が
いるとは思えないんだが・・・
320デフォルトの名無しさん:2009/02/23(月) 20:53:59
時代はpartial !! じゃなくてw
C#使ってるならそのメカニズムくらい分かってる筈だよ。

つーか、Formデザイナからだけでなく、XML構文によるUI要素の
名前空間、クラス、プロパティ、イベントの表現が、公式フォーマットの
XAMLドキュメントという定義で可能になったことが新しい。
321デフォルトの名無しさん:2009/02/23(月) 21:02:35
そうそう。UI定義の方法は、Windows Forms時代には、デザイナが勝手な流儀で勝手にやっていただけ。でもxamlはXMLベースで標準の構造的な仕様が定まっていて、その構造の上にデザイナが
乗っかっている。だから、ブラックボックスで気持ち悪い、とはならない。
322デフォルトの名無しさん:2009/02/23(月) 21:29:15
以前に書き込んだC#+WPF+ARToolkitPlus+DShow.NETでミクさん大放出を、
Windows Media Playerの視覚エフェクトにしてみた。WMPのSDK的に視覚エフェクト
プラグインはC++で作ってオンフレームでデバイスコンテキストに描画するように
なっているので難儀したけど、C#板でCOM InterOpについて助言してもらってどう
にかC#+WPFだけで全部やれた。

動画:http://www.nicovideo.jp/watch/sm6242828
ソース:http://sites.google.com/site/augmentedrealitytestingsite/download
のWMPEmitMiku.zip

なんかもうコンセプトがカオスになってきて、WPF板的にスレ違いっぽくなってきたので
これで終わりにするわ。後の進展(あるか分からないけれど)に興味がある人がいたらニコ動の
マイリストでも時々見てくれ。
323デフォルトの名無しさん:2009/02/23(月) 21:36:00
> window1.g.csはXAMLを読み込む処理を呼び出して
> 読み込まれた要素を対応するC#のフィールドに代入するためだけに生成される

いっている意味がよくわからないんだけれど、

window1.g.csはイベントのシンクとかも処理しているように見えるんだが。
フィールドの代入だけなんて代物じゃないんじゃないの?
xaml全体がシンタックスシュガーかと思っていたよ。


そんなとこまで隠蔽して、
324デフォルトの名無しさん:2009/02/23(月) 21:40:22
323が隠蔽された!
325デフォルトの名無しさん:2009/02/23(月) 21:49:21
window1.g.csがやってること
・リソースのXAMLを読み込む(Application.LoadComponentに丸投げ)
・ロード後,CLRフィールドに要素を代入
・イベントハンドラのアタッチ
326デフォルトの名無しさん:2009/02/23(月) 21:59:07
C#だってILに変換される。それを隠蔽とは言わない。
期待される動作が一通りで、その通りの動作をするのならば、より低いレベルが隠蔽されていても
問題にはならない。必要に応じて高レベル、低レベルを使い分ければ良い。

ブラックボックスが気に食わないのは、ただ一通りの動作を期待できないからで、それは知識不足
のせいだと思うんだけど。
327デフォルトの名無しさん:2009/02/23(月) 22:13:06
XAMLをAPIでパースして、親子関係にのっとり
それぞれのUI用クラスを生成してるだけだろ?

どこが隠蔽されてて気持ち悪いのかぜんぜんわからねーよ。
328デフォルトの名無しさん:2009/02/23(月) 22:22:48
バインディングとかがイベントで実装されている事を知らずに、謎のコードが自動生成されている
とか勘違いしているのかなあ。

俺が気持ち悪く感じるのは、XAML記述上の直接の子要素がどのプロパティ(ChildrenとかContentとか)
に対応するのかXAMLを見ただけでは分からない事だけだ。まあ確かにこれだけは気持ち悪い。
329デフォルトの名無しさん:2009/02/23(月) 23:14:26
以前アップしたXAMLを使わないWPFの例
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8924.txt
一番下のXAMLのWindowsタグをPageに変えて、utf-8でhoge.xamlで保存。
IEで開けばloose xamlでも動く。
330デフォルトの名無しさん:2009/02/23(月) 23:42:06
>>322
ARToolKitはC++でライブラリをラップして、
DLL作ってから参照してるのかいな?
331デフォルトの名無しさん:2009/02/23(月) 23:57:40
>>330
その部分はbrains-N-Brawnさんの仕事。
``ARToolKitPlus - modified to be a DLL and export C-style functions that can be pInvoked from C#''
http://www.mperfect.net/wpfAugReal/
その部分だけpure .netじゃない。そのDLLをPInvokeするラッパはbrains-N-Brawnさんのを拝借
していてそれはpure C#(PInvokeがpureかは別として)。それからDShow.Netも(COM InterOpが
pureかは別として)pure C#。そんでもって3D出力は、NyARToolkitなんかがDirectX SDKに含まれる
Managed Direct Xを必要とするのに対しこちらはWPFの3Dを使用しているのでまあ敢えて言えば
pure(標準の) C#。
というわけで、上記DLLを除いて、オリジナル・非オリジナルのコードいずれも完全に標準のC#と
.NET 3.5(WPF)で書かかれている。まあ、NyARToolkitなんかはARToolkitのコードをマネージコード
に真面目に移植しているので、どっちがpureかというのは微妙だけど。でも、3D出力がWPFである点
によって、とっつき易いアプローチになっている面は確実にあると思う。というか、それで無理やり
関連付けてこのWPFスレに投稿しているわけなんだが。
332デフォルトの名無しさん:2009/02/23(月) 23:58:25
ごめん、改行が変になって読みにくくなった。
333デフォルトの名無しさん:2009/02/24(火) 00:00:05
Windows フォトギャラリーで露出とかコントラスト調整すると
スライダーの移動に合わせてほぼリアルタイムに描画されるんですが、
この機能を自作 WPF プログラムに実装したい場合どうすればよいでしょうか?




334デフォルトの名無しさん:2009/02/24(火) 00:07:08
WriteableBitmapでも使って更新しまくれとしか答えようがない
画像処理自体はスレ違い
335デフォルトの名無しさん:2009/02/24(火) 00:10:59
詳しくないんだが、一応バインディングとかINotifyPropertyChangedインタフェースとかの話題じゃないか?
336デフォルトの名無しさん:2009/02/24(火) 00:17:39
ビットマップの方更新するだけでよかったはず
337デフォルトの名無しさん:2009/02/24(火) 00:19:37
どのタイミングで更新、っていいたいんじゃ?
338デフォルトの名無しさん:2009/02/24(火) 00:22:30
ダイナミックリソースとかバインディングじゃないの?
339デフォルトの名無しさん:2009/02/24(火) 00:22:59
>>331
を、便利な物を作ってる人がいたんだ!。
ARには興味あったのでいじくってみる。

ソース読ませていただきます。
340デフォルトの名無しさん:2009/02/24(火) 00:24:30
よし、リフレクタの出番だ。
http://www.red-gate.com/products/reflector/
341デフォルトの名無しさん:2009/02/24(火) 00:27:05
ほんとにビットマップ更新するならバインディングじゃどうしようもない
SliderのValueChangedイベント使うくらい
342デフォルトの名無しさん:2009/02/24(火) 00:38:30
結局C#なのね
343デフォルトの名無しさん:2009/02/24(火) 00:43:21
>>333の言いたいことってこういうこと?
http://blogs.wankuma.com/kazuki/archive/2009/01/12/166166.aspx
344デフォルトの名無しさん:2009/02/24(火) 09:29:03
>>323はタブーに触れて消されちゃったんだなあ。
345デフォルトの名無しさん:2009/02/24(火) 20:55:23
入力可能なDataGrid風ListView↓使ってる人っている?

ttp://pro.art55.jp/?eid=908012
ttp://d.hatena.ne.jp/Yamaki/20070706/1183688885

テキストの編集中、右クリックでTextBoxデフォルトのContextMenuを開くと
TextBoxがキーボードフォーカスを失い、編集モードを終えてしまうんだけどそういう風にはならない?
ContextMenuのアイテムも選択できない。
346333:2009/02/24(火) 22:01:41
おまえら、エスパーすぐるw

>>343 そこを参考にして画像ビューワーを作ってて、
>>341 のイベントで、
>>334 の方法で自前で露出の調整をしたら、
イベントの処理に5秒もかかっちゃって、
がんばって最適化しても1秒を切ることができなくて、
ためしに、 Vista の Windows フォトビューワーいじってみたら
瞬時に変わるので、これは、GPU 使ってるとか、DirectX 使ってるとか、
なんか自分の知らない WPF テクニックがあるのかと思って質問しました。
347デフォルトの名無しさん:2009/02/24(火) 22:10:35
だから、>>340のリフレクタで解析してみなよ。
俺、Windows XP⇒Windows 7ベータだから、Windows フォトギャラリーないんだ。
348デフォルトの名無しさん:2009/02/24(火) 22:17:07
WPF自体はDirectXつかってるけどな
349デフォルトの名無しさん:2009/02/24(火) 22:46:22
単に画像処理の実装が悪いだけだろ
WPF自体の描画更新なんか画像処理に比べたら一瞬
350デフォルトの名無しさん:2009/02/24(火) 22:47:51
unsafeってしってるか?
351デフォルトの名無しさん:2009/02/24(火) 22:48:31
Bitmapの処理はメモリをロックしてアンマネージでポインタを使わないと遅いぞ〜。
352デフォルトの名無しさん:2009/02/24(火) 22:52:26
ここはWPFスレですよ
WiteableBitmapは十分速いよ
もともと>>351みたいな書き込みの方法しか用意されてない
353デフォルトの名無しさん:2009/02/24(火) 23:03:59
writeableBitmapにコピーするデータ作るのに時間かかってるんだろうが
354333:2009/02/24(火) 23:05:09
>>347
>>340 は俺へのレスだったのか。すまん。
reflector は知ってたけど、Windows フォトギャラリー って .net のプログラムだったんだ?
今日は出先なんで無理だが、家帰ったら試してみる。

>>349
そうなんだよ。だから、フォトギャラリーがどうやってるかわかればなぁ・・・と。

>>350 >>351 >>352
WritableBitmap で unsafe でポインタ使っても遅くて、
C++ で書き直して1秒切るところまでいったんだが、
まだ遅いので質問するにいたったわけです。
355333:2009/02/24(火) 23:06:15
>>353 そのとおりです。
356デフォルトの名無しさん:2009/02/24(火) 23:07:03
アルゴリズムが違うとか,プレビュー用に簡易に処理してるとか
いずれにしてもこれ以上はスレ違い
357デフォルトの名無しさん:2009/02/24(火) 23:13:09
HLSLでやってみるとか
WPFでも使えるようになったことだし
358デフォルトの名無しさん:2009/02/24(火) 23:21:00
>>354
もはやあれで半分反則だけどこんなのがある。反則なので速いと
いっていいのかわからんが

ttp://www.codeplex.com/wpffx

川西先生の紹介↓
ttp://blogs.msdn.com/hiroyuk/archive/2009/02/09/9407704.aspx

ちなみにちょっとビルドに注意。Codeplex にある別のやつがいる
359デフォルトの名無しさん:2009/02/25(水) 04:54:37
Windows Formsコントロールのオーナードロー拡張なんてもういやだ。
WPFの入れ子コントロールとXAMLが欲しい。
あと文字の強制アンチエイリアスはさせたくない。

こんな要望に対するソリューションて現状ある?
360347,340:2009/02/25(水) 05:17:51
>>354
え、WPFスレで、しかもWPFでどうやるのかって質問だったから、.NETプログラムなのかと勝手に
勘違いしてしまった。そうでないのなら、普通にシェーダ使ってるんじゃないの?

純粋なWPFアプリケーションだとしたら、>>358なんかで紹介されているWPFでのシェーダの使用
は最近の更新で可能になったものだから、Vista標準のプログラムとしてはないと思う。

結局、.NETプログラムじゃない、シェーダを使ってるか、画像処理を気合で頑張っている、つまり
スレ違いって所で落ち着きそうだ。
361デフォルトの名無しさん:2009/02/25(水) 06:14:00
>>359
XAMLの中で、例えばテキストボックスに

 <TextBox RenderOptions.EdgeMode="Aliased" x:Name"textbox1" 〜 />

と記述した場合、カーソルバーは1ドット幅の縦棒でシャキーンと表示されるけど、テキスト文字だけは
常にアンチエイリアス処理されますね。これだけ我慢すれば、最良のソリューションじゃないでしょうか。
362デフォルトの名無しさん:2009/02/25(水) 09:29:50
>>359
Form上でそれ実現する奴作った。それ使ったシステム5月ぐらいにリリース予定。
363デフォルトの名無しさん:2009/02/25(水) 09:32:20
手伝おう
テストするからうpして
364デフォルトの名無しさん:2009/02/25(水) 09:52:25
365デフォルトの名無しさん:2009/02/25(水) 11:10:48
>359
ElementHost使えば、winformsにコントロール単位でWPFコントロール
持ち込めるだろ。例えば、ListBoxだけとか。

んで、起動時にSystemFontsの中から適当なの選んで設定すれば、
フォントもwinforms同様になる。
366デフォルトの名無しさん:2009/02/25(水) 13:33:55
初心者な質問で恐縮です。
InkCanvasのペンの色を変える方法を教えてください。
xamlとC#と両方の方法をお願いします。
367デフォルトの名無しさん:2009/02/25(水) 13:40:27
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.inkcanvas.aspx
MSDN読めないならWPFなんか手を出さない方がいい
368デフォルトの名無しさん:2009/02/25(水) 17:45:18
キーバインディングでメソッドを呼ぶときは、どのように書けばいいですか?
たとえばEnterで、設定ボタンを押すとき。
C#だけなら、
private void settingbutton_Click(object sender, EventArgs e){}
を呼ぶには、
settingbutton_Click(this, EventArgs.Empty);
と書けばいいのですが、xamlではどう書けばいいですか?
<KeyBinding Key="Enter" Command="Close"/>
のCommandのところに書けばいいのかと思っているのですが、ここを適当に書くと、
'CommandValueSerializer' ValueSerializer は 'System.String' から変換できません。
とエラーになります。System.Stringということは、デフォルトでいくつかきまっていると思うのですが、その一覧はどこにあるのでしょう?
またその一覧のなかで、メソッドを呼ぶStringはなにでしょう?
よろしくお願いします。
369デフォルトの名無しさん:2009/02/25(水) 17:59:24
> settingbutton_Click(this, EventArgs.Empty);
> と書けばいいのですが、
の意味が心底分からんが

適当にCommandsクラスとか作ってコマンドごとにRoutedUICommandのstatic readonlyフィールドを用意
それをKeyBinding.Commandに設定
あとはCommandBindingでコマンドが呼び出すメソッドを設定
370デフォルトの名無しさん:2009/02/25(水) 18:12:04
す…、すまん。ぜんぜんだめだ。
おれが適当に書くとエラーの山だ。
適当にCommandsクラスをどこに作る? .csのほう?

public partial class Commands : Window {
}

コマンドごとにRoutedUICommandのstatic readonlyフィールドを用意
コマンドごと…。ってことは、設定コマンドを作るのだから、

public partial class Commands : Window {
Setting
}

それをKeyBinding.Commandに設定
xamlで
<KeyBinding Key="Enter" Command="Setting"/>

CommandBindingでコマンドが呼び出すメソッドを設定
private void setting(object sender, EventArgs e){//メソッド}

添削頼む…。
371デフォルトの名無しさん:2009/02/25(水) 18:28:17
> 適当にCommandsクラスをどこに作る? .csのほう?
> public partial class Commands : Window {
System.Windows.Input.ApplicationCommandsみたいにstaticクラスでいいよ。
新しくcsファイル作ってそこにでも。
まあ別にCommandsクラスじゃなくてもいいけどな。肝心なのはRoutedUICommandのフィールドだから。
ApplicationCommandsみたいにICommandは一つにまとめるのが自然だと思っただけで。

つかまずApplicationCommands.CloseとかでKeyBindingとCommandBinding使ったの書いてみろよ。
MSDNやヘルプのこれらのクラスの解説にサンプルがいくらでもあるから。
372デフォルトの名無しさん:2009/02/25(水) 18:42:14
WPFの根幹ってWin32API群なの?
.NET とどう違うの?
373デフォルトの名無しさん:2009/02/25(水) 19:08:57
WPFも.NETで動くことは変わらない
WPFはSystem.Windows.Formsに代わる新しいGUIフレームワーク
最大の特徴は,Win32ネイティブのコントロールを使用せずにウインドウの中身を
一枚の絵としてすべてのコントロールをDirect3Dで自前で描画してること
ゲームの画面にたくさんのキャラクターを描画するのと同じ仕組み
374デフォルトの名無しさん:2009/02/25(水) 19:16:26
ApplicationCommands.CloseでKeyBindingとCommandBindingのは書けてます。
xamlに
<KeyBinding Key="E" Modifiers="Control" Command="Close"/>

csに
private void Close_Executed(object sender, RoutedEventArgs e ){Close();}
public void Close(object sender, CancelEventArgs e){}
です。
じゃあsittingの場合は…。
xamlに
<KeyBinding Key="S" Modifiers="Control" Command="setting"/>

csに
private void setting_Executed(object sender, RoutedEventArgs e ){setting();}
public void setting(object sender, CancelEventArgs e){}
としてはまってるわけです。

で、System.Stringの一覧はどこにあるのでしょう?
375デフォルトの名無しさん:2009/02/25(水) 20:11:33
System.Stringは文字列型の事だよ。

それと、<KeyBinding ほにゃらら だけじゃなくて、それと
<CommandBinding ほにゃらら
がセットになって初めてコマンドのバインディングができる。

それから、
<KeyBinding Key="E" Modifiers="Control" Command="Close"/>
の Command="Close" って記述においては、ApplicationCommandsが特別扱いされている。
より冗長だが汎用的な書き方は
<KeyBinding Key="E" Modifiers="Control" Command="ApplicationCommands.Close"/>
となる。つまりクラスのフィールドを指定しているわけ。多分そのエラーメッセージは、この指定
がうまく行っていないという事。それでもって、自分で作ったクラスの静的フィールドを指定する
には、さらにxamlのマークアップ拡張を使う必要がある(多分)。

だから、xamlは
<Window x:Class="Foo.Window1"  
...
    xmlns:foo="clr-namespace:Foo">
  <Window.CommandBindings>  
    <CommandBinding Command="{x:Static foo:Window1.FooCommand}" Executed="FooCommand_Executed" />    
  </Window.CommandBindings>
  <Window.InputBindings>
    <KeyBinding Key="f" Modifiers="Control" Command="{x:Static foo:Window1.FooCommand}" />
  </Window.InputBindings>  
</Window>
で、Window1.xaml.csの中の# public partial class Window1 : Window  {...}の中に
staticでreadonlyなFooCommandフィールドと、FooCommand_Executedメソッドを実装する。

多分こんな感じ。
376375:2009/02/25(水) 20:21:42
>>375は俺自身参考にした事がある
http://blogs.wankuma.com/kazuki/archive/2008/03/16/127942.aspx
の記事を読み直してまとめたもの。詳しくはリンク先の記事を、やる気があれば
連載になっているから最初から、読んで行って。
377デフォルトの名無しさん:2009/02/25(水) 21:00:22
実験してみたけど、
Command="{x:Static foo:Window1.FooCommand}"

Command="foo:Window1.FooCommand"
とどちらでも問題ないみたい。だから必ずしもx:Staticのマークアップ拡張を使う必要はない。
378デフォルトの名無しさん:2009/02/25(水) 21:44:38
>>373
ありがとうございます
DirectX系で壁画するということはGPUと相性がよさそうですねVista Aeroなんかとも
379デフォルトの名無しさん:2009/02/26(木) 08:10:20
原始人現る
380デフォルトの名無しさん:2009/02/26(木) 08:20:15
壁画って何だよ?
381デフォルトの名無しさん:2009/02/26(木) 09:15:54
>>373
WPFで作ったアプリのUIを自動テストするのは、どんな感じ?
大昔つくったアプリは、コントロールにメッセージ送りつけてやったけど。
382デフォルトの名無しさん:2009/02/26(木) 10:00:52
UI Automationという機能を使うらしい
383デフォルトの名無しさん:2009/02/26(木) 14:11:27
だれか優しくスマートに懇切丁寧におしえろ。
ListBox.Items.Add("うんこ")見たいな物を3回ループしてやると選択がくるっとんねんけどな、コンテンツだと正常なんだわ。
ListBoxて文字でアイテム管理しとん?
解決方法どないやねん???
>>384
384デフォルトの名無しさん:2009/02/26(木) 14:19:06
質問が把握できないので返答もできないわ。力になれなくてごめん。
385デフォルトの名無しさん:2009/02/26(木) 14:21:26
そんな答えほしなかったわぁー。
おっちゃんも暇ちゃうねん、出来るだけはよう答えてくれへんか?
色々問題もあってやな、今火達磨状態やねんで?

誰かに伝えたいこの想い
386デフォルトの名無しさん:2009/02/26(木) 16:53:09
>>381-382
皆さん、UnitTestのテストレポートってどうしてる?
基本的に、初期値、幾つかの中間値、そして境界値とその内外だけを確認?
387デフォルトの名無しさん:2009/02/26(木) 23:46:12
UnitTest?なんですかそれは
ゆとりにもわかるように説明してください
388デフォルトの名無しさん:2009/02/28(土) 01:04:38
WPFで読み込んだファイルの取り扱いについて質問があります。
下記のようにファイルを読み込むとロックするのですが、
string imgFile = @"C:\tmp.jpg";
img.Source = new BitmapImage(new Uri(imgFile));
ロックをはずす方法を教えてください。

ちなみにFormの場合には、
pictureBox1.Image = Bitmap.FromFile(imgFile);
pictureBox1.Image.Dispose();
でロックをはずすことができます。
よろしくお願いします。
389デフォルトの名無しさん:2009/02/28(土) 01:41:22
Windows.FormsのBitmapでロックされないように
MemoryStreamに読み込んでそこからBitmapを読み込むことはよくやる。
同じようにMemoryStreamに読み込ませてBitmapDecoderで読み込めばいいんじゃないかな?
390デフォルトの名無しさん:2009/02/28(土) 02:07:24
>>388
BitmapImage bmp = new BitmapImage();

bmp.BeginInit();
bmp.UriSource = new Uri(imgFile);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.EndInit();
391デフォルトの名無しさん:2009/02/28(土) 02:49:29
みなさま。
早速ありがとうございます。
>>390
これで試してみました。
しかし、ウィンドウは開くものの、ファイルはなにも表示されなくなってしまいました。
392デフォルトの名無しさん:2009/02/28(土) 12:30:28
>>391
コントロールに読み込んだイメージセットしてないだろ
393デフォルトの名無しさん:2009/02/28(土) 12:38:49
UI要素の下や上だけに境界線を引くにはどうしたらいい?
394デフォルトの名無しさん:2009/02/28(土) 12:46:38
>>392
bmp.UriSource = new Uri(imgFile);
だけではセットしたことにならないの?
セットの方法を教えてください。
395393:2009/02/28(土) 12:57:36
自己解決
<Border BorderBrush="Black" BorderThickness="0 1 0 0">
396デフォルトの名無しさん:2009/02/28(土) 13:27:07
>>394
処理の内容ちゃんと理解しなきゃ
397デフォルトの名無しさん:2009/02/28(土) 13:33:32
>>394

>>388に書いてある
img.Source = new BitmapImage(new Uri(imgFile));
ってコードの、右辺の処理new BitmapImage(new Uri(imgFile))をファイルがロックされないように
書き直したのが>>390。出来上がったBitmapImageのインスタンスをimg.Sourceから参照させる
処理は書かなきゃ。
398デフォルトの名無しさん:2009/03/01(日) 18:29:38
できました。1日いろいろ試してました。

(1)img.Source = new BitmapImage(imgFile);
(2)BitmapImage img = new BitmapImage();
img = imgFile;
(3)BitmapImage img = new BitmapImage();
img = bmp;
(4)BitmapImage img = new BitmapImage();
img.Source = bmp;
(5)BitmapImage img = new BitmapImage();
img.Source = bmp;
(6)BitmapImage img = new BitmapImage(bmp);

結局次のようにしてできました。
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.UriSource = new Uri(imgFile);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.EndInit();
img.Source = bmp;
399デフォルトの名無しさん:2009/03/01(日) 18:30:14
処理の内容の理解をしている限りでは、
BitmapImage bmp = new BitmapImage(); //あたらしいbmp変数を作る。bmpのインスタンスを作る。
bmp.BeginInit(); //bmpの処理を始める。
bmp.UriSource = new Uri(imgFile); //bmpにUriソースからデータを読み込む。
bmp.CacheOption = BitmapCacheOption.OnLoad; //??
bmp.EndInit(); //読み込みの終了。これでディスクとは切り離される。
img.Source = bmp; //画面のimgにbmpをいれる。これでimgにbmpを表示できる。

これで表示はできロックもなくなりました。
しかしながら、問題が。
目的のファイルの削除をする、という動作がまだできないままなのです。

削除処理は次のように書きました。
private void button1_Click(object sender, RoutedEventArgs e)
{
System.IO.File.Delete(imgFile);
}
これでボタンを押すと、ウィンドウが消えるのですが、ファイルは残ったままです。
アドバイスお願いします。
400デフォルトの名無しさん:2009/03/01(日) 20:07:14
>>399

string path = @"C:\test.jpg";
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.UriSource = new Uri(path);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.EndInit();
image1.Source = bmp;
System.IO.File.Delete(path);

これで動いたよ


> 削除処理は次のように書きました。
> private void button1_Click(object sender, RoutedEventArgs e)
> {
> System.IO.File.Delete(imgFile);
> }
これのパスを間違えてるとかじゃね
401デフォルトの名無しさん:2009/03/01(日) 20:14:16
402デフォルトの名無しさん:2009/03/01(日) 20:18:44
> bmp.CacheOption = BitmapCacheOption.OnLoad; //??
なんだよそれ?いい加減にしろよ。

http://msdn.microsoft.com/ja-jp/library/system.windows.media.imaging.cachedbitmap(VS.80).aspx
これ全部読むまで再質問禁止。
403デフォルトの名無しさん:2009/03/01(日) 20:27:25
>>400
ありがとうございます。
なんだかわからないのですが、一度終了して再起動したら動くようになりました。
いろいろありがとうございました。
404デフォルトの名無しさん:2009/03/02(月) 16:49:22
WPFの「Frame」カスタムコントロール作成でこけましたorz
Blendで作ってもらったFrameのXAMLをVSで読み込ませると
「'Frame' ControlTemplate TargetType は、テンプレートの型 'PlaceHolderControl' と一致しません。」(エラー場所は無駄な事言ってるので省きました)
と、例外が発生します。
コントロールを作ってもらっても一緒です。
しかし、これらは実際バグっているわけでもなく、ビルドもコンパイルも正常に動きます。
どうもVSのデザイナだけがこけています。

何かいい回避方法(Frameに似たコントロール)などありませんか?
よろしくお願いします。

環境:Windows7 VS2008
405デフォルトの名無しさん:2009/03/02(月) 19:17:27
言ってることがよくわからない
FrameのControlTemplateを作ってるの?それ何の意味があるの?
そんなことしないでユーザコントロールにFrameを張り付ければ一緒だと思うんだが
406デフォルトの名無しさん:2009/03/02(月) 19:29:38
FrameってHTML表示したいときとか
「戻る」「進む」ができるようにしたいときに使うんだよわかってる?
コンテンツを飾り付けしたいだけならDecoratorの派生クラス(Borderなど)使う
もちろんFrameを飾り付けするのにもDecoratorが使えるし,普通はテンプレート使わずにそうする
407デフォルトの名無しさん:2009/03/02(月) 19:34:06
すいません、言うべき事が抜けすぎでした・・・
分け合って「Frame」コントロールを作ってもらいました。
これはWebページとXAMLファイルを頻繁に行き来することになったのでこのようにしています。
そしてコントロールにする必要があるのは、そのFrameの中にゴチャゴチャしたものをつける必要があったのです。

発注したコントロールに問題があるのかと思ったのですが、Frame自体を少しでも変えるとおかしくなります。
<Window.Resources>
<ControlTemplate x:Key="FrameControlTemplate1" TargetType="{x:Type Frame}"/>
</Window.Resources>

<Grid x:Name="LayoutRoot">
<Frame Margin="128,160,200,131" Content="Frame" Template="{DynamicResource FrameControlTemplate1}"/>
</Grid>
このような簡単なものでもエラーになってしまいます。

理由を教えてください
408デフォルトの名無しさん:2009/03/02(月) 19:42:32
ちょっと状況が良く分からないんだけど、WPFにFrameコントロールがあるので
衝突しているんじゃないかな?
 
xmlns宣言で名前空間への参照を追加して、名前空間込みで「Frame」コントロールや
そのx:Typeを指定したらどうだろう?
409デフォルトの名無しさん:2009/03/02(月) 19:48:34
その自作FrameのTemplatePart属性は確認した?
410デフォルトの名無しさん:2009/03/02(月) 21:00:28
>>408
ちょっと判らなかったです・・・
MSDNをみてやってみたのですがうまくいきません。
アセンブリは「PresentationFramework.dll 内」となっているので問題ないですが、
XMLNSは参照して追加しても「タグ 'Frame' は、XML 名前空間 'http://schemas.microsoft.com/winfx/xaml/presentation' にありません。」
となってしまいます。

色々やってみた結果、
<Frame Margin="120,192,136,139" Content="Frame" Template="{DynamicResource FrameControlTemplate1}">
<Frame.Resources>
<ControlTemplate x:Key="FrameControlTemplate1" TargetType="{x:Type Frame}">
<ContentPresenter />
</ControlTemplate>
</Frame.Resources>
</Frame>
ではVSでもBlendでもデザイナで編集したり、コンパイルできたりするようになりました。
結局こうなってしまう理由がわかりませんw
リソース内でFrameのスタイルを指定させたいのですが、どうしてもうまくいかない・・・

>>409
これはどういうことでしょうか?
「TemplatePart」というのが判らず仕舞いになってしまいましたorz
申し訳ないです。;;
411デフォルトの名無しさん:2009/03/02(月) 21:08:56
コントロールテンプレートは完全に自由に書いていいわけじゃなくて,
最低限テンプレートに含めないといけないコントロールが決められてるのが普通
それを示す属性がTemplatePart
逆に,そういう条件が必要ないならあまりテンプレートを使う意味がない
412デフォルトの名無しさん:2009/03/02(月) 21:19:23
>>410
ツール-オプション-テキストエディタ-xaml-その他-既定のビュー

「常にフルxamlビューでドキュメントを開く」
のチェックを外せば直るみたい。

でも、xaml直書きする場合、このチェックは入れておきたいよねえ。
なんか普通にバグっぽいぞ。
413デフォルトの名無しさん:2009/03/02(月) 21:38:27
>>411
>コントロールテンプレートは完全に自由に書いていいわけじゃない
てっきり何をしてもいい>>412
物だだと思っていました!
TemplatePartは詳しく調べる必要があるようです。

>>412
うまくいきませんでした・・・
どうしても「'Frame' ControlTemplate TargetType は、テンプレートの型 'PlaceHolderControl' と一致しません」がデザイナのみにエラーが出てきます。
コンパイル、ビルドも出来るので間違ってはいないと思いますが、VSのデザイナが使えないというのはキツイです・・・
414デフォルトの名無しさん:2009/03/04(水) 04:37:13
WPFのデザイナは相変わらず貧弱だなぁ

そこが萌えるんだけどw
415デフォルトの名無しさん:2009/03/05(木) 16:28:41
WPF始めてみたいけどネット上には驚くほど資料ないねこれ・・・
416デフォルトの名無しさん:2009/03/05(木) 16:40:00
InteliSenseこそ最上のヘルプ
417デフォルトの名無しさん:2009/03/05(木) 17:02:12
>>416
試すパターンが膨大で困るw
418デフォルトの名無しさん:2009/03/05(木) 17:12:14
書店にも本が並んでない
すべてxamlのせいで敷居が高くなってるせいだと思う
WPFだけなら新しいコントロールライブラリってことで十分普及したと思うよ
Microsoftはxaml使うのをWPFが使われるようになってからに遅らせるべきだった
419デフォルトの名無しさん:2009/03/05(木) 17:25:04
ネットだと
http://ufcpp.net/study/dotnet/index.html
とか
http://uchukamen.com/WPF/Default.htm
くらいを見て、後はいろんな人のブログを見てバインディング周りの
定石をしれば、本当の話IntelliSenseで十分ヘルプになるようになる
と思う。
420419:2009/03/05(木) 17:26:32
ごめん、419の前にこれを投稿しようとしたんだ。

俺はWPF+XAMLはWindows Formsや昔のWin32APIでウィンドウ
作ってた時代よりも初心者向けだと思うよ。

本がないのも外国語の物は専門性の高い物から入門書まで多いし、
日本の出版事情が大きいんじゃないかな。

421デフォルトの名無しさん:2009/03/05(木) 18:07:43
ちょっと質問!
TextBlockで普通の改行入りテキストを
<TextBlock TextWrapping="Wrap">
あれ?<LineBreak />
声が<LineBreak />
遅れて<LineBreak />
聞こえるよ<LineBreak />
</TextBlock>
こうやって作った後Blendとかに再読み込みさせると「Inline」がいっぱい引っ付いてくるんだけど、この書き方は推奨されていないから?
それともBlendの屁理屈?
422デフォルトの名無しさん:2009/03/05(木) 20:01:29
初心者にとっては(とっつきやすさでは)
Windows Forms > WPF/XAML

Windows Formsは
・XMLを編集しなくていい
・APIのデザインも直感的(使いたい機能が「そこ」にある)
423デフォルトの名無しさん:2009/03/05(木) 21:31:12
>>421
意味が同じだから
424デフォルトの名無しさん:2009/03/05(木) 22:27:40
>>422
WPFはWindowsFormsと同じようにAPIベースで作成できるよ。
名前が違うだけでやってることはほぼ同じ。

初心者ってのはおまえ自身のことだろ。
425デフォルトの名無しさん:2009/03/05(木) 22:31:49
>>423
答えてくれてありがとう!
何かTextBlockも機能的にはとてもいいけど、Labelの方が簡単でとっつき易いなー
426デフォルトの名無しさん:2009/03/05(木) 22:43:40
一般のテキスト表示にはTextBlockを使う
Labelは別のコントロールに文字通りラベルとアクセスキーを付けるためだけに使う
ということでおk?
427デフォルトの名無しさん:2009/03/05(木) 22:45:20
Labelは一行
TextBlockは数行
くらいにしか深く考えたことないや。
428デフォルトの名無しさん:2009/03/05(木) 23:16:17
GDIが早くていいよ
429デフォルトの名無しさん:2009/03/05(木) 23:37:44
>>419

bindingが覚えづらい。xml的お作法としてはああなるのが正当なのかも
しれないけれど、直感に反する書き方だし、わかりづらいし、何とかしてほしい
リソースがらみもそう。

とにかくxamlで中カッコ {}が出てくる場面はうんざりする。なんなのこの変態言語
って感じで。
430デフォルトの名無しさん:2009/03/06(金) 00:33:21
>>429
それ、マークアップ拡張だから、使わないで普通にBinding要素を子要素として
書く事もできるよ。その方がInteliSenseの支援も受けられるし。
 
RelativeSourceが絡んでくる場合とか、マークアップ拡張使うと
中カッコが二重になって>>429が言う通りうんざりする。入力支援
もないし。でも、Binding要素とそのRelativeSourceプロパティに
RelativeSource要素を普通のxmlの文法で書けば嫌な点は解消される。
 
例えば、前に書いた、Canvasに置いてあるViewport3Dの幅をCanvasに合わせる
コードを書いておくね(なぜかHorizontalAlignment=Stretchだとうまくいかなかった)。
 
 <Viewport3D.Width>
  <Binding Path="ActualWidth">
    <Binding.RelativeSource>
      <RelativeSource Mode="FindAncestor"
        AncestorType="{x:Type Canvas}"
        AncestorLevel="1"/>
    </Binding.RelativeSource>
  </Binding>
</Viewport3D.Width>
 
等価なのは
 
<Viewport3D Width={Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}, AncestorLevel=1}}/>
 
だけど、これだと>>429が言うように支援がなくて書くのが大変だし、
実行時まで間違いが分からないし、実行時の例外の内容は分け分からないしで
嫌になるのも分かる。
431デフォルトの名無しさん:2009/03/06(金) 00:36:17
あと、マークアップ拡張使う方がxmlの入れ子が無闇に深くならなくて済むので
必ずしも悪い事でもない。そこでマークアップ拡張使う場合にお勧めなのが
次のアンチョコ:
http://go.nbdtech.com?94E138EA

432デフォルトの名無しさん:2009/03/06(金) 01:39:57
まともなデザイナーがVSについていればもう少し使われやすいと思うんだがな・・・・
Formsはペタこれするのはわかりやすいけれど、それ以上ができない。
WPFはそういうところがエレガントにできるけど、バインディングとか正直わかりにくい。
433デフォルトの名無しさん:2009/03/06(金) 08:13:24
>>429
たしかにな

1.xaml=エレメントの画面表示
2.コード=データの操作
3.補助定義表=それらのバインディング等

みたいに分離してみたらどうなのか。3.を1.にくっつけているからゴチャゴチャになっている。
そういう定義ファイルに、>>430なら、

[ myViewport3D.Width <= myCanvas1.ActualWidth ]

とでも書いておけばそれ1行でOKにする。一目瞭然。初期化等も大方は

[ myWindow1.Background = Brushes.White ]

そこに記述でいいとすれば、xaml自体の方も(エレメントの単純な階層関係記述が基本になり)ごくすっきりする。

でこんなのは、システムがその表を解析して現状xamlに展開する、という形に出来る
(ものが多い、or出来るものだけをこういう初期定義可能にする)だろうから、拡張機能として比較的簡単に出来そうじゃないのか。
434デフォルトの名無しさん:2009/03/06(金) 17:29:22
すいません、バインディングに関する質問です
複数のPage間でテキストデータをバインディングするとき、どうすればいいかわかりません。
名前空間などに定義する方法などが考えられるのですが、一番簡単で効率のいい方法はないですか?
435デフォルトの名無しさん:2009/03/06(金) 17:57:21
このスレをマイクロソフトに教えればわかりやすい資料つくってくれるかもしれないよ
436>>434:2009/03/07(土) 15:56:56
マイクロソフトのサンプルの中にWindow間でデータのバインディングをやっているのを見たのですが、
やっぱり名前空間を全てのWindowのザムルに定義している方法を取っているので、これが妥当だと思う
437デフォルトの名無しさん:2009/03/08(日) 12:54:50
ProgressBarでバーをスムーズに(FormアプリのProgressBarStyle.Continuousみたいに)表示させるには
Templateを弄るしかないんですか?
438デフォルトの名無しさん:2009/03/09(月) 18:06:04
DataContextにオブジェクトが設定してあるとして
LoadedやUnloadedイベントにそのオブジェクトのメソッドを登録したいのですが
コードを書かずにXAML上だけでできますか?
439デフォルトの名無しさん:2009/03/10(火) 04:39:43
ここってsilverlightの話もしていいの?
440デフォルトの名無しさん:2009/03/10(火) 08:15:43
>>439
専用スレあるよ。
Microsoft Silverlight 2.0 その3
http://pc11.2ch.net/test/read.cgi/tech/1227324813/l50
441デフォルトの名無しさん:2009/03/10(火) 21:11:14
↑別スレですか
ありがとうございます
442デフォルトの名無しさん:2009/03/11(水) 10:41:36
誰かMSに報告
Blendにて「Hyperlink」編集不可
直タグ打ち可
443デフォルトの名無しさん:2009/03/11(水) 11:07:30
お前がやれ
444デフォルトの名無しさん:2009/03/11(水) 11:24:06
アカウントとるのめんどくせw

エヘッ♪
445デフォルトの名無しさん:2009/03/11(水) 22:36:52
xamlで記述したプログラムととC#のプログラムって
記述方法が違うだけで使ってるのは同じ.NET frameworkだから
性能とかはかわらないんだよね?
446デフォルトの名無しさん:2009/03/11(水) 23:07:15
かわらん
447デフォルトの名無しさん:2009/03/11(水) 23:08:12
ロードはたぶんXAMLの方が遅い
ロード後の動作は全く一緒
448デフォルトの名無しさん:2009/03/11(水) 23:46:48
ありがと
htmlの描き方が苦手なおれはxamlじゃなくてまずC#でWPF勉強するわ
449デフォルトの名無しさん:2009/03/12(木) 13:07:52
BitmapImageで読み込める画像形式を追加することはできませんか?
できればアプリケーション内でローカルに追加/削除できて
他のアプリケーションには影響しないようにしたいのですが。
450デフォルトの名無しさん:2009/03/12(木) 16:10:21
UriSourceプロパティを使うのはたぶん無理
自前のコードで読み込んでStreamSourceに設定するしかないと思う
でもそうするといちいち他の画像形式に変換しないといけないし
BitmapImageを使う意味もないので
BitmapSource.Createを使ってピクセルデータから直接作った方がいい
451デフォルトの名無しさん:2009/03/12(木) 17:17:54
アニメーション設定とかしてる場合、コードとザムルアニメーションはやっぱりコードの方が優先?
設定できたりする?
452デフォルトの名無しさん:2009/03/12(木) 17:30:33
後で設定した方が有効になるだけだが
453デフォルトの名無しさん:2009/03/12(木) 18:30:36
>>433
> 3.補助定義表=それらのバインディング等

これをデザイナのプロパティウィンドウあたりで簡単に設定できれば
xamlの中に取り込まれていても問題ないと思うんだが。
デザイナがひどすぎると思う。
454デフォルトの名無しさん:2009/03/12(木) 18:42:18
結局デザイナだろ
WinFormsはもっと汚い形でやってるんだから
455デフォルトの名無しさん:2009/03/13(金) 16:04:08
XMLバインディングをやってみたんだけど、「存在するXMLと同期」じゃなくて、
「存在しているXMLをリソースとして利用」のほうが正しい?

どうも作ってみても、EXEの中にリソースとして取り込まれて、XMLファイルの切り替えとかが出来ないw
RSSの仕組みでネットワークにあるものを指定してやると、切り替えとかをネットワーク越しに出来るけどローカルでは無理な感じ。
456デフォルトの名無しさん:2009/03/13(金) 16:32:24
ごめん嘘、忘れて
457デフォルトの名無しさん:2009/03/14(土) 02:47:23
ポカー
458デフォルトの名無しさん:2009/03/14(土) 07:13:23
RichTextBox に Wordwrap プロパティがないんだけども、
改行しないで表示させたい場合どうしたら良いの?
459デフォルトの名無しさん:2009/03/14(土) 14:17:38
TextBoxでいいんじゃね?
RichTextBoxの中にあるFlowDocumentだっけか、
あれにパネルとか突っ込んで見たんだけど、どうもスクロールバー自体がテキスト扱いになって操作できないし。
460デフォルトの名無しさん:2009/03/14(土) 15:06:30
>>458
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.richtextbox.aspx
> RichTextBox ではテキストが常に折り返されます。
> テキストの折り返しが不要な場合は、FlowDocument の PageWidth を RichTextBox の幅より大きく設定します。
> ただし、この場合も、ページの幅に達するとテキストが折り返されます。
なので、
<RichTextBox><FlowDocument PageWidth="300"/></RichTextBox>
<RichTextBox><FlowDocument MinPageWidth="680" MaxPageWidth="1024"/></RichTextBox>
みたいに、適当に大きな幅を入れておくとか。
ただ、横スクロールバーを表示すると、最初からスクロールできる状態になってしまうのが難点だけど。
後は、イベントで動的に幅を測定して FlowDocument.PageWidth に反映させるとか。
461458:2009/03/14(土) 23:04:06
>>459
色つけたかったんで、TextBoxじゃだめなのよ

>>460
ありがとう。助かったぜ。
462デフォルトの名無しさん:2009/03/15(日) 00:28:01
WCFおもしろいな。しかしスレはない
463デフォルトの名無しさん:2009/03/15(日) 01:17:46
>>462
Webサービス プログラミング総合スレッド
ttp://pc11.2ch.net/test/read.cgi/tech/1031149340/
464デフォルトの名無しさん:2009/03/15(日) 01:38:18
>>462
特に旧来のWindowsForms、これからのスタンダードなWPF、XBAP、Silverlight、そして携帯電話や汎用
ブラウザ向けのASP.NETなんかで相互に共用できるアプリケーションシステムの構築となると、
やっぱりWCFは欠かせないよね。

俺の場合、データ・レイヤはSQL Server、アプリケーション・レイヤは機能・役割ごとに複数個のWCFで構築。
プレゼンテーション・レイヤは、WinForm、WPF、XBAP、Silverlight、Javaでマルチクライアント環境を実現。
今はこの基本3層構成をWebサービスのマイブームと位置付けて色々と遊んでいる。
465デフォルトの名無しさん:2009/03/15(日) 13:16:46
重要度的には Silverlight>WPF>XBAP な希ガス。
466デフォルトの名無しさん:2009/03/15(日) 13:34:46
>>465
XBAPはSilverlightへの発展的解消で完全に進化が止まっちゃったからね。
Silverlightは資料もチュートリアルも豊富。WPFとの2本立てで決まりだね。

そういえば、MIX'09でSilverlight 3の発表ですな。
ブラウザナビゲーションとの連携が目玉らしいけど、それよりTextBox上での
右クリック時にコピペ系のコンテキストメニューを出すようにして欲しいな。
467デフォルトの名無しさん:2009/03/15(日) 13:46:59
もうSliverlight3の発表ですか、これは楽しみ。
ついでにBlendも改善バージョンを発表してもらいたいですね。
468デフォルトの名無しさん:2009/03/16(月) 02:29:08
Silverlightで書かれたサイトって一発でわかる?
469デフォルトの名無しさん:2009/03/17(火) 00:29:03
インストールを強制されるからね
470デフォルトの名無しさん:2009/03/17(火) 18:36:56
C#でXPSドキュメントを弄っているけど、これって面白いな。

XpsDocument NewXpsDoc = new XpsDocument("D:\\AAAA.XPS", FileAccess.ReadWrite);
XpsDocumentWriter XpsDocWrtr = XpsDocument.CreateXpsDocumentWriter(NewXpsDoc);
XpsDocWrtr.Write((Visual)this);
NewXpsDoc.Close();

たったこれだけでWindowと配下のコントロールすべてを含むXPSドキュメントが生成されて
D:\AAAA.XPS に出力された。
VS2008かExpression Blendを使ってXAMLでサクッと注文書などの伝票フォーマットのひな形の
Windowを書いて、LINQでDBやXMLをバインディングさせてやれば、カンタンに自社ロゴ入りの
伝票なんかをXPSで出力できるな。
もうCrystalReportやQuickReport、サードパーティーのPDF帳票コンポーネントなんて不要だね。

さらにバーコードコントロールも .NET 4.0で標準搭載してくれれば・・・
471デフォルトの名無しさん:2009/03/19(木) 03:50:47
でもC#のプログラムって商用にしにくいよね
割と簡単にソースを推論できるから
472デフォルトの名無しさん:2009/03/19(木) 04:25:53
>>471
情報システム系の業務アプリには向いているよ。
オンライン販売やパッケージ販売のソフトウェア制作には向かないかも。

商用≠開発したソフトウェアの製品マスターのコピーを販売する
商用=商用の設備・ツールとしてソフトウェアを稼動させる
473デフォルトの名無しさん:2009/03/19(木) 07:17:14
難読化してありゃ十分じゃね?
客先で難読化されてた奴見たけど中身を見る手間相当あがると思うけど。

動作のわかる所からクラス機能を推論して意味通る名前を当てはめるにしても全体の把握は大変そう。
一部のロジックがわかれば良くてそこだけピンポイントで調べるのには向かなそうだが。
474デフォルトの名無しさん:2009/03/19(木) 07:21:40
VisualStudioに組み込んでくれないかな
難読化
475デフォルトの名無しさん:2009/03/19(木) 11:06:32
商用というかメーカー製PCのバンドルソフトでも.NET利用がちらほら見かけるようになったが、
大抵ネイティブモジュールとのハイブリットだしな。
476デフォルトの名無しさん:2009/03/19(木) 14:52:32
ネイティブと混ぜたらネイティブ部分はちゃんとブラックボックス化するのか?
あと自作したlibやdllを混ぜたらリコンパイルきかないだろう
さすがに機械コードを読んで作るやつはいるわけないし
477デフォルトの名無しさん:2009/03/19(木) 15:34:17
GUIだけ.NETって感じ?
478デフォルトの名無しさん:2009/03/19(木) 15:56:36
C++で書いてあるコードでも、UI部分のように、そのほとんどがAPIコールのものは解読は容易。
だいいち、そんなに解読されて困るコアのアルゴリズムがあるんだったら、それはサービス化
してSaaSで提供するとか考えるべき。
479デフォルトの名無しさん:2009/03/19(木) 21:20:25
tabControlのタブに画像を表示させるのはどうすれば良いのですか。
このアプリのようにしたいのですが。
http://tmpgenc.pegasys-inc.com/ja/product/tme3_feature.html
480デフォルトの名無しさん:2009/03/19(木) 21:29:45
ItemTemplateプロパティで
481デフォルトの名無しさん:2009/03/19(木) 21:40:39
>>479
TabItem.Header に Image を指定する。

<TabControl>
  <TabItem>
    <TabItem.Header>
      <Image Source="example.jpg" Stretch="None"/>
    </TabItem.Header>
    ....
  </TabItem>
  ....
</TabControl>
482デフォルトの名無しさん:2009/03/20(金) 07:25:57
481>>
ありがとうございます。
「ファイル example.jpg はプロジェクトの一部ではないか、'Build Action' プロパティが 'Resource' に設定されていません。」
となります。Resource設定はどのように行うのでしょうか。


483デフォルトの名無しさん:2009/03/20(金) 11:30:12
>>482
Visual Studio を使っているなら、
プロジェクトを右クリック->追加->既存の項目...->イメージ ファイル->example.jpg。
ビルドアションの変更する場合は、
プロジェクトに追加したファイルを右クリック->プロパティ->ビルド アクション。

詳しくは、ここを参照。
Windows Presentation Foundation アプリケーションのリソース、コンテンツ、およびデータ ファイル
http://msdn.microsoft.com/ja-jp/library/aa970494.aspx
484デフォルトの名無しさん:2009/03/20(金) 20:48:14
WPFの窓の中にopenglで描画したり,WPFの窓をC++で使うことは出来ますか?
485デフォルトの名無しさん:2009/03/20(金) 21:12:32
>>484
とりあえずここを読んでみては?

WPF 移行と相互運用性 - MSDN
http://msdn.microsoft.com/ja-jp/library/ms753178.aspx
486デフォルトの名無しさん:2009/03/20(金) 21:18:12
WPFは4.0でよくなるのかなー
Form,Silverlight,WPFどれがどうつかわれてくのかいまいちさきがみえん。
Silverlight3.0とかかなりよさげで環境を問わないWeb,デスクトップ含めたUIフレームワークとしてかなり有望そうだが。
487デフォルトの名無しさん:2009/03/20(金) 21:46:10
>>485 読んでみます
488デフォルトの名無しさん:2009/03/20(金) 23:24:43
機能もだが、XPで4.0がサポートされるのかどうか不安だ。
グラフィック関係の新規APIはほとんどVista以降のみ対応だからなあ。
489デフォルトの名無しさん:2009/03/21(土) 03:38:28
SGMLは<tag> </tag>ではなく[tag][/tag]にすべきだった
<>入力するときにShiftがめんどくさいです><
490デフォルトの名無しさん:2009/03/21(土) 08:04:07
>>483
ありがとうございます。できました。
491デフォルトの名無しさん:2009/03/21(土) 09:30:52
WPFって時期尚早と思わない?
初心者が取っ付くには敷居が高すぎる。
ウインドウズフォームとちがって単純に貼り付けて
プロパティを操作するだけではだめだ。

インテリセンスも効かないXAMLファイルを操作しなくては
ならないし。
492デフォルトの名無しさん:2009/03/21(土) 12:28:12
時期尚早だよ。だからこそ楽しい。
493デフォルトの名無しさん:2009/03/21(土) 14:00:00
そういうこと。F#もいい。
494デフォルトの名無しさん:2009/03/21(土) 14:23:11
少なくとも生産性は低いな
495デフォルトの名無しさん:2009/03/21(土) 14:40:02
>>491
俺はC#だけで書いてる
496デフォルトの名無しさん:2009/03/21(土) 15:06:20
確かWPFってデュアルコア6GHz時代を想定して作ったんじゃなかったっけ?
497デフォルトの名無しさん:2009/03/21(土) 15:33:44
どう考えても、XAML + C# の方が生産性が高くないか?
498デフォルトの名無しさん:2009/03/21(土) 15:37:54
WinFormよりXAML+WPFの法がよほど効率的だな。
499デフォルトの名無しさん:2009/03/21(土) 15:59:55
DataGridViewさえ充実していれば…
500デフォルトの名無しさん:2009/03/21(土) 16:01:15
次期バージョンを待て
501デフォルトの名無しさん:2009/03/21(土) 17:56:52
>>497
>>498
何を持ってそう言える???
502デフォルトの名無しさん:2009/03/21(土) 21:17:12
生産性を高くするためのフレームワークなんだから、低かったら使う意味ないじゃん。
503デフォルトの名無しさん:2009/03/21(土) 23:55:26
XAMLでUIの階層分けを意識して記述できるし、
アニメーションさせなきゃならない部分があっても気軽に書ける。
504デフォルトの名無しさん:2009/03/22(日) 00:06:30
WinFormsはデザイナでコントロールの親子関係を変更するのが面倒だったな

その点、WPFはXAMLを少し書き換えるだけなので楽だ
505デフォルトの名無しさん:2009/03/22(日) 00:09:13
ポトペタ以上のことやろうとしたらWinFormsは簡単に破綻するでしょ。
506デフォルトの名無しさん:2009/03/22(日) 00:59:04
XAMLはコントロールの親子関係もプロパティもすべて一覧で把握できる。
507デフォルトの名無しさん:2009/03/22(日) 01:02:31
UIの柔軟性とソースでの視認性の双方のバランスがいいよなXAMLは
これに関してはWinFormとは段違いでいいと思う
508デフォルトの名無しさん:2009/03/22(日) 01:12:50
>>501涙目
509デフォルトの名無しさん:2009/03/22(日) 01:26:51
C#とxamlとで相互変換できるならVSでボタン一つで切り替えるようになるといい
それぞれのいい所取りできれば最高
510デフォルトの名無しさん:2009/03/22(日) 01:45:40
C#の利点(リファクタリングとか)がXAMLでも完璧に使えたらとは思うが、
そのアプローチには無理があるだろう

XAML→C#は可能だろうけど、
C#→XAMLはC#のコードがXAMLに埋め込まれる事になりそう
511デフォルトの名無しさん:2009/03/22(日) 02:10:37
>C#→XAMLはC#のコードがXAMLに埋め込まれる事になりそう
これに関してはマイクロソフト様より「技術的には可能だが非推奨」という
実務ガイドラインの見解を戴いております。
512デフォルトの名無しさん:2009/03/22(日) 11:54:50
コードが埋め込まれたとしても、そんなところには見向きもしないでxamlで見やすいところだけ編集するんだから無問題
513デフォルトの名無しさん:2009/03/23(月) 15:22:18
WPF Toolkit が更新されてるね。
DataGrid, DatePicker, Calendar のバグが修正されたみたい。

WPF Toolkit - March 2009 Release
http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25047

ttp://blogs.wankuma.com/kazuki/archive/2009/01/31/167199.aspx
↑のスクロールで列の表示が崩れるバグもしっかり修正されてたよ。
514デフォルトの名無しさん:2009/03/24(火) 20:22:05
XAML編集でちゃんとインテリセンスが効けばいいんだけどねえ。
この辺もVS2010で改善されるのかなあ……
515デフォルトの名無しさん:2009/03/24(火) 20:28:48
>>514
{Binding }にもインテリセンス効くようになるらしいよ
エディタも十分高機能化するそうだけど
516デフォルトの名無しさん:2009/03/25(水) 03:46:02
VS2008でその水準に達していなかったのが最大の失策
517デフォルトの名無しさん:2009/03/25(水) 11:40:19
>>515
>{Binding }にもインテリセンス効くようになるらしいよ
これはかなり嬉しい。
そういや、WPF Toolkitも標準で入るとか聞いたが…。
518デフォルトの名無しさん:2009/03/25(水) 19:05:20
Windowsライクな外観を作りにくい
519デフォルトの名無しさん:2009/03/25(水) 20:42:17
なんでWPFでウィンドウの外枠とかタイトルバー弄れないようにしたんだろ。
P/InvokeかWindowStyle.None使えってAnderson神父は言うけど面倒臭いよ面倒臭いよ
520デフォルトの名無しさん:2009/03/26(木) 09:14:00
・C#は知ってる。
・XMLは知ってる。
・Windows Formは未経験。

この条件でいきなりWPFの勉強を
始めることは可能?
521デフォルトの名無しさん:2009/03/26(木) 11:42:45
余裕
522デフォルトの名無しさん:2009/03/26(木) 12:57:30
>>521
アリガト
523デフォルトの名無しさん:2009/03/26(木) 17:27:22
>>519
<r:RibbonWindow x:Class="Window1"

</r:RibbonWindow>

リボンUIのWindowはこんな感じで実装されてるな
524デフォルトの名無しさん:2009/03/29(日) 09:19:05
System.Windows.Controls.UserControl の再描画を抑制する方法ってありますか?
複数のプロパティを連続して変更する際に、変更するごとに再描画されるのを
回避したいんです。
525デフォルトの名無しさん:2009/03/29(日) 12:28:31
LayoutRooからいったんRemoveし、プロパティを設定後Addするとか
526デフォルトの名無しさん:2009/03/29(日) 19:13:40
印刷プレビューダイアログはどこにあるの?
527デフォルトの名無しさん:2009/03/30(月) 08:47:26
System.Printing
528デフォルトの名無しさん:2009/03/30(月) 08:49:27
ってPreviewの方か
ないんじゃないかな
作ったFixedDocument表示すればそれがPreviewになるし
529デフォルトの名無しさん:2009/03/30(月) 18:41:53
VS2008 ExpressでWPFをかじったんだが、
WinFormと比べてデザイナがまだまだ発展途上ですね。
Web上に日本語の情報も少ないし、どうしようか。

みんなどんな開発環境でWPF遊んでる?
530デフォルトの名無しさん:2009/03/30(月) 18:45:06
春休みだな
531デフォルトの名無しさん:2009/03/30(月) 20:07:45
はるかな尾瀬ー
532デフォルトの名無しさん:2009/03/30(月) 21:30:47
>>531
それは夏では
夏がくーれば思いだすー、
533デフォルトの名無しさん:2009/03/30(月) 21:42:40
やっちまったぜ♪
534デフォルトの名無しさん:2009/03/30(月) 22:49:41
ののこみちー
535デフォルトの名無しさん:2009/03/31(火) 01:59:37
日本語の情報待ってろ
536デフォルトの名無しさん:2009/03/31(火) 02:40:36
英文のドキュメントも読めない奴がこんな発展途上の分野に手を出すなと小一時間

まあ、英語でも情報少ないんだけどなw
537デフォルトの名無しさん:2009/03/31(火) 08:33:44
WPFはなくなるの?



答えはもちろんNO!
538デフォルトの名無しさん:2009/03/31(火) 09:25:32
1年後くらいに、Full Trusted Silverlight Applicationとかが発表されて、
トドメを刺されるような気もする。まうその方向なら今やっといて損はない気はするけどね。
539デフォルトの名無しさん:2009/03/31(火) 09:36:28
ブラウザ上でFullTrustedなんてActiveXの二の舞だし
結局ローカルにインストールベースになると思うんだが
そうするとそれってただのWPFじゃん
540デフォルトの名無しさん:2009/03/31(火) 13:33:39
Silverlightスレのを参考に
winformsの探し方がマズイかもしれないからどこまで正しいか分からんが・・

http://www.indeed.com/jobtrends?q=sql+(win+forms+or+winforms)%2C+sql+wpf&l=
541デフォルトの名無しさん:2009/03/31(火) 18:04:09
WebでWPFは流行らないだろうなぁ。
世のスキル的にもWebはPHP、Java、ASP.NETだし。
今時点で情報の少なさが普及しないってことを物語ってる。
とはいえ、デスクトップ分野ではWindowsFormはWPFに間違いなく移行する。

WPF学ぶなら情報の出そろった3年後が良いよ。
542デフォルトの名無しさん:2009/03/31(火) 18:46:15
世のスキル的にも・・って
WPFはPHP・Java・ASP.NETの代替になるような物じゃないのだが・・・。

Silverlightの話としても、比べるべきはFlex, JavaFx (, Flash, Java Applet)じゃないか?
543デフォルトの名無しさん:2009/03/31(火) 19:22:15
Flex, JavaFx, SLのRIA plugin組が対峙するのはAppleやGoogleが推すHTML5
544デフォルトの名無しさん:2009/03/31(火) 19:27:06
Webのクライアントはブラウザで事足りる?
545デフォルトの名無しさん:2009/03/31(火) 19:45:34
あれ、AppleもなんかFlash的な何か作ってなかったっけ?
546デフォルトの名無しさん:2009/03/31(火) 19:56:18
洋書でWPFのお勧め本は何?
547デフォルトの名無しさん:2009/03/31(火) 21:14:19
MSはxaml無視してWindowsFormの後継としてWPFを積極的に広めるべき
十分広まった後でxamlもちだせばOK
548デフォルトの名無しさん:2009/03/31(火) 21:21:29
XAMLのないWPFなんてw
549デフォルトの名無しさん:2009/03/31(火) 21:35:38
>>547
馬鹿
550デフォルトの名無しさん:2009/03/31(火) 21:39:51
なんで?俺xamlなしでやってるぜ?
551デフォルトの名無しさん:2009/03/31(火) 21:56:20
まさかXAMLを使った事がないのに、XAMLイラネって言ってるわけじゃないよな?
552デフォルトの名無しさん:2009/03/31(火) 22:12:00
そだよ?xamlわかんねーもん
553デフォルトの名無しさん:2009/03/31(火) 22:14:54
XMALなしのWPFプログラムは全部DOM使ってHTMLを記述するようなものだよ。
554デフォルトの名無しさん:2009/03/31(火) 22:15:09
それだと「頑張れ」としか言えないじゃないか・・
555デフォルトの名無しさん:2009/03/31(火) 22:37:06
全部C#でやるなんてすごいな。俺にはやり方がわからん。
556デフォルトの名無しさん:2009/03/31(火) 23:04:07
>>329 にサンプルがあった
557デフォルトの名無しさん:2009/04/01(水) 03:59:34
>>329を参考にして、MainWindow()内に
Image myImage = new Image();
myImage.Width = 200;

BitmapImage myBitmapImage = new BitmapImage();

myBitmapImage.BeginInit();
myBitmapImage.UriSource = new Uri(@"D:\Unko\My Pictures\Images\hoge.jpg");
myBitmapImage.DecodePixelWidth = 200;
myBitmapImage.EndInit();
myImage.Source = myBitmapImage;
を入れて(内容はttp://msdn.microsoft.com/ja-jp/library/ms747027.aspxのものです
実行してみたのですが、真っ白なウィンドウが出るだけで画像が表示されません。
どこがいけないのかわかりません。どう書けばいいか教えてください。
558557:2009/04/01(水) 07:04:31
自己解決しました。
最後にthis.Content = myImage;を追加するだけだったとは…。
559デフォルトの名無しさん:2009/04/01(水) 08:40:06
>>546
please
560デフォルトの名無しさん:2009/04/01(水) 19:29:06
.NETでGUIプログラミング始める人ってかわいそう。
Windowsの仕組みも知らずにプログラミングして何が楽しいことか。
ま、今に始まったことじゃないけどね。VBとかDelphiもそうだけど。

VC++でWindowsAPI駆使した方が間違いなく素晴らしいアプリ作れる。
もっとも、WindowsAPIは把握するまでが大変だけど。
.NET使った方が楽なところは、マネージコード使って、
それ以外はアンマネージで。使い分ければスタンドアロンWPFいらないぜ!

とここまで書いてて気になったが、VistaでWinFX(.NET)が見送られたけど、
いつの日か、WindowsAPIは、.NETで公開されるように置き換わるのかなぁ。

WPFの目指すところがイマイチわからない。
561デフォルトの名無しさん:2009/04/01(水) 19:40:17
釣られないよ
562デフォルトの名無しさん:2009/04/01(水) 19:42:02
突っ込みどころが色々あって釣られたくなるw
563デフォルトの名無しさん:2009/04/01(水) 19:48:03
横からだけど気になるので突っ込みきぼん
564デフォルトの名無しさん:2009/04/01(水) 21:09:48
System.Windows.Controls.Canvas の継承したクラスを作って、
OnPreviewMouseLeftButtonDown をオーバーライドしました。

Canvas の Children に設定したコントロールをクリックしたときは
イベントが発生したんですが、新しく作成したコントロール自身を
クリックしたときはイベントが発生しません。

MSDN で UIElement..::.OnPreviewMouseLeftButtonDown メソッドを見ると
「派生クラスの静的コンストラクタ内で、Mouse..::.PreviewMouseDown の
代替クラス ハンドラを登録します。 OnPreviewMouseLeftButtonDown
オーバーライドして UIElement のマウス処理動作を変更することはできません。」
とあるんですが、関係あるんでしょうか?

OnPreviewMouseLeftButtonDown を OnMouseLeftButtonDown に
変えても同じでした。

自分自身をクリックしてもイベントが発生するようにするには
どうしたらよいのでしょうか?

565デフォルトの名無しさん:2009/04/01(水) 21:21:09
>>564
まず>>560の話を片付けて質問。な?
空気空気。
566デフォルトの名無しさん:2009/04/01(水) 21:36:48
そいじゃまず俺から突っ込んでみる。  後ろから ズボッ ! とな。

Windowsの仕組みを知る楽しみ ≠ プログラミングの楽しみ
それにプログラム完成までの最短・最良の道を選択するのは
世間では常識で普通のことだよ。
567デフォルトの名無しさん:2009/04/01(水) 22:34:02
>>546
希望する内容を言ってくれた方が紹介しやすいが、

Pro WPF in C# 2008
Pro WPF with VB 2008

なんてどうだろう。
一通り最初からゆっくり読んで実験していけば、
エッセンスは頭に入ると思う。
英語も平易て読みやすいし、情報量の割には価格も安い。
ただし、ページ数がハンパないが
(C# 版しか知らないが、目次を見る限りは VB 版も同内容だと思う)
568デフォルトの名無しさん:2009/04/01(水) 22:40:28
>>564
Panel は子を入れて使うのが前提だから Background が設定されていないとクリックイベントが呼ばれないみたいだね。
<l:MyCanvas Background="Transparent"/> としても良いから Background を設定してみたら?
569564:2009/04/01(水) 22:52:57
>>568
ありがとうございます。
助かりました。

Background を設定しなければならないなんて考えもしませんでした。

ところで、Background を設定しないとイベントが発生しないと
どういう方法で調べたのですが?

よろしければ後学のため教えていただきたいのですが。
570デフォルトの名無しさん:2009/04/01(水) 23:07:33
571デフォルトの名無しさん:2009/04/01(水) 23:50:03
>>567
レスどうも。
確かにそれ1000ページ超えてるんだよね。
600ページくらいだったら即決なんだけど、
検討してみる。
572デフォルトの名無しさん:2009/04/01(水) 23:53:24
>>570
Proシリーズか。
Linqが良かったから、Silverlight2も気になってる
573568:2009/04/02(木) 00:03:56
>>569
今回はテストコードを書いて試しているときに、たまたま気付いただけ。参考にならんでごめん。

今調べ直したら、ちゃんと基底クラスの方で書かれていたよ。
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.panel.aspx
> Background が定義されていない場合、Panel 要素はマウス イベントやスタイラス ベントを受け取りません。
マウス イベントまたはスタイラス イベントを処理する必要があるが Panel の背景は必要ない場合は、Transparent を使用します。
574デフォルトの名無しさん:2009/04/02(木) 00:25:50
WPFアプリケーションを作成してみようと思っているのですが、
最初のウィンドウが表示できなくて困っております。

手順は以下の通りです。

・新しいプロジェクト画面でWFPアプリケーションを選択
・ビルド
・実行

多分この時点でウィンドウが表示されると思うのですが、何も立ち
上がらずに実行を終了?してデバッグ実行モードを抜けてしまいます。

そこで、Window1.xaml.csのコンストラクタにブレイクを仕掛けてみたのですが、
どうやらインスタンス化されていないらしく停止しませんでした。

プロジェクトのスタートアップオブジェクトの設定を確かめ、
自動生成されるApp.g.cs内のMainメソッド内にブレイクを
仕掛けてみたのですが、こちらでも停止しませんでした。

どうやら根本原因はMain()が呼ばれていない事のようなのですが、
どのように解決すればよいかわかりません。

もしよろしければ解決のためのヒントをいただけませんでしょうか・・・。
575デフォルトの名無しさん:2009/04/02(木) 01:27:09
VS2008か?
環境を書かないと
576574:2009/04/02(木) 01:34:49
>>575
すっかり抜けていました、申し訳ありません。

OSは XP の SP3を適用済みで、VS は
Visual Studio 2008 Express Editionです。

577デフォルトの名無しさん:2009/04/02(木) 01:46:19
うちVistaで同じ手順で普通に実行されるのであんま力になれないけど
プロジェクトフォルダの bin と obj を削除して再ビルドしてもダメなら
Visual Studio を再インストールしてみたらどうだろう
578574:2009/04/02(木) 02:00:35
>>577
どもです、さっそく試してみます。
579デフォルトの名無しさん:2009/04/02(木) 02:12:40
.NET Frameworkのバージョンが3.0未満とか、そういうオチはないだろうなw
580574:2009/04/02(木) 02:16:31
プロジェクトのプロパティーを確認しましたが、
「対象のフレームワーク」の項目は3.5になっております。
581デフォルトの名無しさん:2009/04/02(木) 02:39:03
ビルドに成功してるなら実行環境の問題っぽいけどな・・・
Windows Forms Applicationなら問題なくビルドして実行できるのかな?
582574:2009/04/02(木) 03:14:19
>>581
確認しましたらWindows Forms Applicationでも同じ症状がでていました。
これからVSを再インストールして試してみます。
583デフォルトの名無しさん:2009/04/02(木) 13:27:19
>>545
何、それ?
まったく分からない。
584デフォルトの名無しさん:2009/04/02(木) 13:48:02
>>583
FlexとかAirとかじゃね?
まあ開発環境としてはMSより程度が低いよね。
585デフォルトの名無しさん:2009/04/02(木) 14:07:52
>>584
それ、AppleではなくてAdobeじゃん。

>まあ開発環境としてはMSより程度が低いよね。
はぁ?
というか、お前自身の程度が低いだけだろ。
586デフォルトの名無しさん:2009/04/02(木) 14:23:00
釣られんなよ
587デフォルトの名無しさん:2009/04/02(木) 15:23:16
AIRのような継はぎのマッシュアップがいつまで持つやら。
588デフォルトの名無しさん:2009/04/02(木) 15:49:34
>>584
Adobeの開発環境よりMSのVSシリーズが劣るところを詳しく。
まあ程度が低い君に比較する事なんて無理だよね。
589デフォルトの名無しさん:2009/04/02(木) 16:29:42
ん?
590デフォルトの名無しさん:2009/04/02(木) 16:33:35
591デフォルトの名無しさん:2009/04/02(木) 16:41:16
春ですなぁ…。
592デフォルトの名無しさん:2009/04/02(木) 16:46:55
自演
593デフォルトの名無しさん:2009/04/02(木) 16:48:51
アンカーミスだか誤読だか知らんがこれは恥ずい
594デフォルトの名無しさん:2009/04/02(木) 16:50:58
ラーメンマン
595デフォルトの名無しさん:2009/04/02(木) 16:55:31
今日温かいなぁ…
596デフォルトの名無しさん:2009/04/02(木) 16:57:27
>>584 = >>588
だろ。
クソワロタ
597デフォルトの名無しさん:2009/04/02(木) 17:06:00
Adobeの開発環境よりMSのVSシリーズが劣るところを詳しく。
まあ程度が低い君に比較する事なんて無理だよね。
    \___________/
           ___                _
       / ____ヽ           /  ̄   ̄ \
       |  | /, −、, -、l           /、          ヽ きみ頭だいじょうぶ?
       | _| -|○ | ○||         |・ |―-、       |
   , ―-、 (6  _ー っ-´、}         q -´ 二 ヽ      |
   | -⊂) \ ヽ_  ̄ ̄ノノ          ノ_ ー  |     |
    | ̄ ̄|/ (_ ∪ ̄ / 、 \        \. ̄`  |      /
    ヽ  ` ,.|     ̄  |  |         O===== |
      `− ´ |       | _|        /          |
598デフォルトの名無しさん:2009/04/02(木) 17:49:13
いつになったらWinFormsを超えられるんだ?
工数増加たまらんね
599デフォルトの名無しさん:2009/04/02(木) 22:08:14
>>553

HTMLはぽとぺたですむからこそ、表現系がDOMだろうがHTMLだろうが
どうでもいいわけで。
手でがりがり書かなきゃいけないならどっちでも一緒。HTML内に全部
書かなきゃいけないのはむしろ地獄。ajaxなんて地獄の生産性の悪さ
ってこった。
600デフォルトの名無しさん:2009/04/02(木) 22:23:20
ajaxとhtmlって関係あんの?
601564:2009/04/02(木) 22:52:06
>>573
基底クラスのドキュメントかぁ・・・
勉強になりました。
602デフォルトの名無しさん:2009/04/03(金) 23:21:58
ああもう、ここは俺のチラシの裏だ
603デフォルトの名無しさん:2009/04/03(金) 23:33:29
ググってもほとんど個人のウンコblogしかでてこない
全世界のウンコエンジニアのウンコ記事ばかりだ

お前の意味不明な忘備録を全世界に公開するな
公開するならせめて意味のわかるものにしろ、この糞どもが


ふぅ、すっきりした
ほんと、こんな情報ばっかりなんだよなw

俺のウンコを拭くチラシの裏終了
604デフォルトの名無しさん:2009/04/03(金) 23:37:51
UserControl を作成して、XAML で定義した StaticResource を
コードビハインドで使おうと思います。

> StaticResourceExtension ex = new StaticResourceExtension();
> ex.ResourceKey = "HatchBrush";
> Brush brush =(Brush)ex.ProvideValue( XXX );

↑のようなコードで使えそうだってことはググった結果わかったのですが、
XXX になにを入れれば良いのでしょうか?

605デフォルトの名無しさん:2009/04/04(土) 00:09:28
貴様はMSDNのライブラリすら調べられないのか、このウンコが

http://msdn.microsoft.com/ja-jp/library/system.windows.staticresourceextension.providevalue.aspx

で、その引数のインターフェイスが
http://msdn.microsoft.com/ja-jp/library/system.iserviceprovider.aspx

そのインターフェイスの唯一のメンバーがGetService メソッド

サンプルコード見てるならググる前にライブラリ調べろよ
お前みたいなウンコがいらんblog記事書くから
こういう分野でのgoogle検索が面倒になるんだよ・・・

もう終電はないし仕事場で俺一人、飲みながら2ch
暴言も反省はしてない。北朝鮮のミサイルが待ち遠しい。
606デフォルトの名無しさん:2009/04/04(土) 00:17:57
俺んちに落ちてこないかなー
607デフォルトの名無しさん:2009/04/04(土) 00:35:45
そもそも、WPFうんぬん以前に.NET Frameworkでコード書ける人間が
俺一人ってどういうことだよ、この職場wwww

なんかもう、OOPについていけないSEがその辺にごろごろいる
コーディング?VBなら一通りできますよ?みたいな。もう死ねよ
608604:2009/04/04(土) 00:49:05
>>605
IServiceProvider の使い方がわからないわけでなく、
UserControl を継承したクラスのなかで、どうやって
IServiceProvider を得るのかがわからないんです。
609デフォルトの名無しさん:2009/04/04(土) 01:18:15
>>607
お前みたいなのでも雇ってるんだから
ずいぶん寛大な会社だと思うんだが。
610デフォルトの名無しさん:2009/04/04(土) 01:24:40
>>608
多態性(polymorphism)というOOPの概念を知ってるか?
というか、インターフェイスの使い方がよくわかってないんだろう・・・
俺の職場にゴロゴロいるやつらと同じだwww

C++では多重継承は変態コーディングで害悪だ、みたいな空気があったけど
C#では標準ライブラリからして、インターフェイスを使った多重継承が常識になってるんだよ
611デフォルトの名無しさん:2009/04/04(土) 01:43:26
>>604
間違ってたら、ごめんね。単純に XAML で定義した StaticResource を使いたいってだけなら、
FindResource メソッドが UserControl の基底クラスで定義されているので、それを使えば良いよ。
http://msdn.microsoft.com/ja-jp/library/system.windows.frameworkcontentelement.findresource.aspx

> Brush brush = (Brush)FindResource( "Key" );

StaticResourceExtension は XAML 拡張マークアップ( Background={StaticResource ...} みたいな書き方 ) を
定義しているだけのクラスなので、通常、コードから使う必要はないです。
612デフォルトの名無しさん:2009/04/04(土) 07:10:55
>C++では多重継承は変態コーディングで害悪だ、みたいな空気があったけど

アホが使うとな。
613デフォルトの名無しさん:2009/04/04(土) 07:48:51
もうだめかもわからんね
614デフォルトの名無しさん:2009/04/04(土) 08:49:24
>>610
文句言うだけで回答出来ねぇw ワロス
615デフォルトの名無しさん:2009/04/04(土) 17:29:46
>>610
インターフェースと多重継承ごっちゃにすんなよ。
区別がついてない時点でおまえもその職場の奴らと同類だ。
616604:2009/04/04(土) 18:08:22
>>611
教えていただいた方法で無事リソースを得る
ことができました。
ありがとうございました。
617デフォルトの名無しさん:2009/04/06(月) 07:50:59
小賢しい暴言書きちらすような奴は
>>610
結局手前が一番何もわかっていない糞馬鹿だということの典型モデルですな

要素に対するシステム特有の扱いへの質問にすぎんものに
>多態性(polymorphism)というOOPの概念を知ってるか?
もう痛さ百乗
618デフォルトの名無しさん:2009/04/06(月) 12:30:35
>>610
最後2行はネタであると願っております。
619デフォルトの名無しさん:2009/04/06(月) 12:48:51
>>610は間違いなのか?

結局何が答えなのか・・・
620デフォルトの名無しさん:2009/04/06(月) 13:06:06
>>610
の最後に行は間違いなくネタ
621デフォルトの名無しさん:2009/04/06(月) 13:10:23
>>610はOOP概念に拘ってるようですが、
プログラミングの基本は抽象化です。別にOOPに限った話ではありません。
インタフェースは使い方はそれほど重要ではなく(簡単なので)、インタフェース
という実現方法が問題解決の副次的要素です。
多重継承問題は、抽象化プログラミングと深く関わっています。

このまま解説を続けても良いですけど、WPFスレなので
スレ汚しになるので控えさせてもらいます。
622デフォルトの名無しさん:2009/04/06(月) 13:21:16
構わん、続け給え。
623デフォルトの名無しさん:2009/04/06(月) 13:28:21
私の貴重な時間を奪わないでください。
624デフォルトの名無しさん:2009/04/07(火) 01:30:02
ピタゴラスイッチの「ぼくのおとうさん」という歌が、何気にインターフェースの概念をよく表しているよな。
お店にはいるとお客さん、歩いていると通行人。でもインスタンス(おとうさん)は同じ。

625デフォルトの名無しさん:2009/04/07(火) 04:04:10
>>610 の人気に嫉妬w
いまごろ泣いているんだろうなぁ
626デフォルトの名無しさん:2009/04/07(火) 08:56:07
>>607
うちの会社でやらないか?
627デフォルトの名無しさん:2009/04/07(火) 12:06:13
ねーよw
628デフォルトの名無しさん:2009/04/08(水) 01:45:10
大きいです
629デフォルトの名無しさん:2009/04/08(水) 02:51:59
WPFおもれーな、しかしAtom270ではデバッグ後の復帰がおもてーwww
630デフォルトの名無しさん:2009/04/08(水) 08:20:58
>>629
Atomじゃなくても重いから
631デフォルトの名無しさん:2009/04/08(水) 16:23:00
>>629
VSのスタートアップページ(RSSとかプロジェクトとかが表示されてるタブ)を閉じておくと
なぜか復帰が早くなることがあるよ
むしろ、なぜかスタートアップページを表示しておくととてつもなく時間がかかる
なんでこんな無駄なページが毎回起動時に表示されるのかが分からん
632デフォルトの名無しさん:2009/04/08(水) 16:35:25
>>629
どうやって楽しんでる?満足に理解できないでしょ?
633630:2009/04/08(水) 17:07:09
>>631
トンクス、スタートアップページは閉じてみます。

>>632
そうだね、まだWPF/XAMLの国内本を3冊と、
MSDNしか読んでないしな〜。

WindowsFormの代替品としてテストしてるけど、
ユーザーコントロールを簡単に部品として作成できるの嬉しい。
634デフォルトの名無しさん:2009/04/08(水) 17:43:21
>>633
俺はWPF関連の情報はネットを中心にかき集めてるわ

評価版リボンUIつけられて、アプリボタンのStyle書き換えもうまくいったけど、評価版だからやっぱり不安定だわ。
2010が待ち遠しい
635630:2009/04/08(水) 19:01:21
>>634
おれは情弱だからWebでいい資料を探す技術がないんだよ〜。
それはさておき、VS2010とBlend3.0は気になる!
636デフォルトの名無しさん:2009/04/08(水) 20:21:48
Blend3.0はどうでもいいけど、VS2010は買いだな。
VS2008はWPFの開発環境がまだまだ発展途上だもん。
2010になると強化されるらしいが・・・。

今別なこともやってて、VS2008買おうか迷ってるんだが、
来年VS2010が控えてるからなー・・・。今2008買っても損しそう。
2010買ったら数年使い倒せると信じたい。
637デフォルトの名無しさん:2009/04/08(水) 22:14:06
一年前と比べるとちょっと賑やかになってきたな
あと2年ぐらいたてば主流になれるのかな
638デフォルトの名無しさん:2009/04/09(木) 01:20:59
早くても3年以上はかかるだろうな
639デフォルトの名無しさん:2009/04/09(木) 01:55:23
WPFのサブセットのSilverlightを使ってしまうと、
もはやHTML+css+Javascriptなんてやりたくなくなるな。
640デフォルトの名無しさん:2009/04/09(木) 02:03:10
やりたくならなくならないのか
641デフォルトの名無しさん:2009/04/09(木) 09:10:40
>>636
つサンブスクリプション1年分
642デフォルトの名無しさん:2009/04/09(木) 13:44:59
>>641
そういう買い方(レンタル)もあるのですね。
マイクロソフトのサイトを確認しても価格が見つかりません。
1年分でいいのでサブスクリプションしたいなぁ。
643デフォルトの名無しさん:2009/04/09(木) 14:01:28
644デフォルトの名無しさん:2009/04/09(木) 14:07:42
エッセンシャルWPFは初心者向きですか?
645デフォルトの名無しさん:2009/04/09(木) 14:23:01
>644
初心者って言うか、最初に通しで読んで、設計思想とか、
何でそうなってんの?って部分について「へー」と納得する為の本。

後でリファレンスマニュアルとして読み返すような部分はない。
646デフォルトの名無しさん:2009/04/09(木) 14:58:19
>>645
レスthxです。
Pro WPF買って読んでるんですが、ちょっと難しいなと感じています。
WPFに馴染んでおくという意味で、エッセンシャルWPFを
先に読んでおくとProも理解しやすくなりますかね?
647デフォルトの名無しさん:2009/04/09(木) 15:52:24
入門本としては黒い表紙のXAML本がおすすめかな。

APIだけでやりたいなら赤坂本があるけど、
WPFの威力が半減以下にw

エッセンシャルは黒XAML本の後に読んだ方が理解が早いかな、
内容自体はかなり重複してるけどね。
648デフォルトの名無しさん:2009/04/09(木) 15:54:42
黒xamlじゃわかんねーよ
WPFの本、店頭に並んでないんだから
649デフォルトの名無しさん:2009/04/09(木) 16:03:14
アマゾン XAML でググれば一番上に出てくるよ。
650デフォルトの名無しさん:2009/04/09(木) 16:07:21
お前、いいやつだな、惚れた
651デフォルトの名無しさん:2009/04/09(木) 16:10:39
いいのかい?そんなにホイホイ惚れちまって・・・
652デフォルトの名無しさん:2009/04/09(木) 16:19:27
>>647
thx
本屋で黒XAMLを見てみます。
653デフォルトの名無しさん:2009/04/09(木) 23:41:06
本題なんか?みに行けば軽く吹き飛ぶぐらいなもんなんだから気になったのはどんどん買っとけ
かぶったなら後輩にあげろ
654デフォルトの名無しさん:2009/04/10(金) 03:02:22
>>647 の言うとおり
赤坂本はやめとけw
655デフォルトの名無しさん:2009/04/10(金) 14:26:47
XAMLは@ITの連載記事でなんとかなった。
656デフォルトの名無しさん:2009/04/11(土) 21:29:32
有名どころのサイトだと、The Code Project のサンプル群が役に立つ。
あと Dr.WPF とか。本はエッセンシャル WPF が良かった。
XAML を書いてると、オーサリングソフトなしで HTML を書いてる気分になるが、
慣れれば GUI ポトペタより手書きの方が楽だね。
VS 2010 では、XAML 中の Binding などにも、インテリセンスが効くようになるそうだから、
ますます手書きが良くなるな。
657デフォルトの名無しさん:2009/04/12(日) 00:03:31
winformレベルのポトペタ環境にした程度ではWPFはカバーできないってだけの気も
658デフォルトの名無しさん:2009/04/12(日) 00:09:21
なんかあれだ。Blend 併用したほうがいいんじゃないか
みたいな気がする。VS 持ってるなら高くないし。
659デフォルトの名無しさん:2009/04/12(日) 00:51:25
ブレンドみたいなフリーソフトが出てきたら本気出す
660デフォルトの名無しさん:2009/04/12(日) 00:56:20
作ろうと思った時期があった。
インテリセンスの実装ができなくて挫折した。
(その前に入力したコードに色つけんのもね。実装してみたけどさすがにもたつきすぎで、バグりすぎで)
661デフォルトの名無しさん:2009/04/12(日) 16:09:59
Win32→COM→.NETLib→WPF/XAML
662デフォルトの名無しさん:2009/04/12(日) 16:34:51
Dependency Propertyが難しい。。
いきなり詳細を見るのは無謀かな。
663デフォルトの名無しさん:2009/04/12(日) 21:56:26
UserControl をつくって、そのなかに Rectangle を配置しました。
enum Level { Low, High }; を作成し、Level という名前の
DependencyProperty を作成しました。

で、Level に応じて Rectangle の色を変えようと思い、

<Rectangle>
  <Rectangle.Style>
    <Style TargetType="{x:Type Rectangle}">
      <Style.Triggers>
        <Trigger Property="local:Usercontrol1.Level" Value="High">
          <Setter Property="Rectangle.Stroke" Value="Red" />
        </Trigger>
        <Trigger Property="local:Usercontrol1.Level" Value="Low">
          <Setter Property="Rectangle.Stroke" Value="Blue" />
        </Trigger>
      </Style.Triggers>
    </Style>
 </Rectangle.Style>
</Rectangle>

としたところ、コードビハインド内で、Level を変更しても Rectangle には
反映されませんでした。
どこが問題なんでしょうか?
664デフォルトの名無しさん:2009/04/12(日) 22:26:07
>>663
DataTriggerでElementNameとかRelativeSourceとか使ってUserControl1のプロパティを参照するバインディングを使う
Trigger.Propertyは基本的に自分自身のプロパティが対象だよ
665デフォルトの名無しさん:2009/04/13(月) 02:07:34
GridSplitterの挙動で質問です。

現在GridでRowを12、Columnを2で区切り、
それぞれ下記のように使用しております。

<Canvas Grid.Row="0" Grid.Column="0" Grid.RowSpan="12"/>        <Canvas Grid.Row="12" Grid.Column="0" Grid.RowSpan="3"/>
<Canvas Grid.Row="0" Grid.Column="1" Grid.RowSpan="7"/>
<Canvas Grid.Row="7" Grid.Column="1"/>
<Canvas Grid.Row="8" Grid.Column="1"/>

見かけはVSの配置と似たような形になります。

そこでそれぞれのペインの幅や高さを調整したい為に、
GridSplitterを使用して境界を作成しました。

<GridSplitter Margin="1" Height="5" Grid.Row="0" Grid.Column="0" Grid.RowSpan="12" VerticalAlignment="Bottom" HorizontalAlignment="Stretch"/>

<GridSplitter Margin="1" Width="5" Grid.Row="0" Grid.Column="0" Grid.RowSpan="15" VerticalAlignment="Stretch" HorizontalAlignment="Right"/>

このGridSplitterのうち、最初に作成した方がドラッグしても
設定が正しくないらしくまったく移動しません・・・。

よくない箇所などございましたらご指摘くださいませ。
666デフォルトの名無しさん:2009/04/13(月) 07:45:48
開発ツールだとか開発フレームワークでお作法が難しいのはかまわない
いずれ慣れる。しかし概念が難しいもんはいずれ廃れる。
wpf/xamlはどうも後者のような気がするんだがなあ。
667デフォルトの名無しさん:2009/04/13(月) 13:23:24
MSDNってわかりやすい?
プログラミングはじめたばかりなこともあってか、内容読んでてもなんか理解しづらい。
階層も複雑だし。
668デフォルトの名無しさん:2009/04/13(月) 13:31:24
他の情報サイト見に行くようにわざと読みにくくつくってある
ユーザーサポートがめんどくさいから
669デフォルトの名無しさん:2009/04/13(月) 13:35:45
わからんとむかついたときは、フィードバック書いてる
670デフォルトの名無しさん:2009/04/13(月) 16:15:16
MSDNはリファレンスとして以外は使えん。リファレンスとして使う場合も、日本語版は
意味不明な訳語のせいで読んでもさっぱり判らないことが結構多いので、
英語版と両方当たるべし。

入門記事やTipsは、日本語に拘らなければネット上に無料でいっぱい転がってる。
まぁ、ようするに、日本で人気が出ていない技術を触るなら、英語で探せってこった。
671デフォルトの名無しさん:2009/04/13(月) 18:35:39
.NETの訳はなかなかいいよ。
Win32APIの訳がクソなのは同意だが。
672デフォルトの名無しさん:2009/04/13(月) 18:39:48
Win32APIは訳がクソ以前にそもそも存在してないの多数だからな…
673663:2009/04/14(火) 10:37:47
>>664 DataTrigger を使用して無事動作させることができました。
ありがとうございました。

(アク禁喰らって書き込みが遅くなってすみません)
674デフォルトの名無しさん:2009/04/16(木) 16:03:33
親のCanvasの幅を取得して、子であるGridの幅とする処理を考えております。
テストは下記のようにして行いました。

<Canvas Name="canvas0">
    <Grid Width="{ Binding ElementName = canvas0, Path = Width }" ShowGridLines="True">
    .
    .
    .
</Grid>
</Canvas>

バインディングで解決しようと試みたのですが駄目なようです。
もしよろしければアドバイスをいただけませんでしょうか・・・。
675デフォルトの名無しさん:2009/04/16(木) 16:32:52
ActualWidthじゃないと意味無いんじゃない?
CanvasのWidthは未指定みたいだし。
676デフォルトの名無しさん:2009/04/16(木) 16:58:06
>>675
ActualWidthで無事解決できました。
ありがとうございます!
677デフォルトの名無しさん:2009/04/16(木) 17:46:03
それCanvas使うのが間違いだろ
Grid使うべき
678デフォルトの名無しさん:2009/04/16(木) 20:24:21
GridのLine描画がどうもよろしくないので、Canvasに線を描画して
上のGridをレイアウト目的のみに使用しようと思っております。
679デフォルトの名無しさん:2009/04/16(木) 21:29:32
System.Windows.Controls.Primitives.MultiSelector を実装した
サンプルってどこかにないですか?
680デフォルトの名無しさん:2009/04/17(金) 22:48:32
>>633
> そうだね、まだWPF/XAMLの国内本を3冊と、

3冊って、何の本読んだのでしょうか?

681デフォルトの名無しさん:2009/04/18(土) 03:14:47
てゆーか国内本3冊ぐらいしか無くねーか
682デフォルトの名無しさん:2009/04/18(土) 10:37:28
>>681
エッセンシャル WPF
XAMLプログラミング
WPF 3Dプログラミング
こんなところ?
あとはamazonで評判の悪い本がちらほらあるけど。
683デフォルトの名無しさん:2009/04/18(土) 12:57:44
そんなかだとエッセンシャルが一番mともだな
684デフォルトの名無しさん:2009/04/18(土) 21:31:08
そうなのか
685デフォルトの名無しさん:2009/04/19(日) 20:29:57
>>683>>684
M友・・・ なのか(汗
686デフォルトの名無しさん:2009/04/19(日) 23:31:55
レイアウトなんだけど、コンテナを層にすることってできる?
奥はコンテンツを表示するCanvasコンテナで、手前はコントロール類を置くDockPanelコンテナ
で、DockPanelのほうは使わないときは半透明にして奥のCanvasのコンテンツが透けて見える
って感じにしたいんだけど。
687デフォルトの名無しさん:2009/04/19(日) 23:44:37
WPF のデバッグ中に強制終了を繰り返すと、
デスクトップ・アプリケーション・ヒープが枯渇するらしく、
コンテキストメニューの表示がおかしくなるんだけど、
なんか対策ある?
688デフォルトの名無しさん:2009/04/20(月) 00:02:14
vshost削除すればいいんじゃないか
689デフォルトの名無しさん:2009/04/20(月) 00:48:10
WPFって気持ちいいよね
Binding多用して完全にXAMLだけで再現できたときとか
690デフォルトの名無しさん:2009/04/20(月) 00:56:56
>>687
デスクトップヒープならレジストリで増やせるだろ。
うんとでかくしておけ。
http://support.microsoft.com/kb/126962/ja
691デフォルトの名無しさん:2009/04/20(月) 17:57:27
<Border ...>
<StackPanel>
・・・
</StackPanel>
</Border>
てな感じに入れ子になってると、スタックパネルの領域がウィンドウ幅いっぱいまで
広がってくれないんだけど、いっぱいまで広がってくれるにはどうしたらいいの?
692デフォルトの名無しさん:2009/04/20(月) 19:08:21
試しにウィンドウを1つ作って、ウィンドウの中身を

<Border>
<StackPanel Background="Black">
</StackPanel>
</Border>

としてみたら、ウィンドウ全体が黒くなったけど?
693デフォルトの名無しさん:2009/04/20(月) 20:34:35
>>692あれれ、ほんとだ。スマソ
BorderをCanvasに変えてくだされ。
画像ソフトのレイヤ機能みたいに、幾層にも重ねてみたい
(レイヤごとに別のXAMLファイルに分けられればうれしい)けど、
さっぱりわからんなも。
694デフォルトの名無しさん:2009/04/20(月) 21:20:24
前にも出てたけど、親要素のサイズに合わせたいなら、CanvasじゃなくてGridを使うんだよ

<Grid>
<StackPanel Panel.ZIndex="1"/>
<StackPanel Panel.ZIndex="2"/>
</Grid>

レイヤをユーザーコントロールにしておけばXAMLをファイルに分けることもできる
695デフォルトの名無しさん:2009/04/20(月) 21:38:01
>>694
望みの動作になった、ありがとう!
696デフォルトの名無しさん:2009/04/20(月) 22:40:17
WPFでコンソールアプリケーションつくれないの?
697デフォルトの名無しさん:2009/04/20(月) 22:43:55
http://www.amazon.co.jp/Windows-Presentation-Foundation%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Chris-Sells/dp/427406641X

これおすすめ。内容がBeta時点のだけど、
エッセンシャルよりいいと思う。
698デフォルトの名無しさん:2009/04/20(月) 23:17:59
>>696
コンソールアプリケーションとはちょっと違うが、
ASP.NETと一緒に使って、サーバサイドでの画像生成に使ってるよ
699デフォルトの名無しさん:2009/04/21(火) 01:07:44
>>697
主旨はともかく
サンプルコードはbeta時代の書き方ゆえ相当使い物にならんので
買う人は覚悟して。
700デフォルトの名無しさん:2009/04/21(火) 06:17:28
DataTrigger で特定の Rectangle だけ色を変えようと思って、
TargetName を指定したら、Style では TargetName は指定できないという
エラーが出てしまいました。

回避する方法はありますか?
701デフォルトの名無しさん:2009/04/21(火) 08:02:51
当のRectangleのStyleに書けば良い
702シロウト:2009/04/21(火) 19:32:19
client XBAP から serverにあるファイルを読みたいのですが、
簡単な方法ない?
703シロウト:2009/04/21(火) 19:58:13
すんません、WebClient でウンコでした。
704700:2009/04/21(火) 21:27:16
>>701
レスありがとうございます。
説明不足ですみません。
色を変えたい Rectangle が6個あるんで、その方法だと6か所に書かないといけません。
バインドする値はひとつですが、色は個別に指定したいと思います。
705デフォルトの名無しさん:2009/04/23(木) 11:09:02
CLRオブジェクトとのバインディングで、
判りやすい記事を紹介していただけますでしょうか・・・。

よろしくお願いします。
706デフォルトの名無しさん:2009/04/23(木) 16:02:52
レイアウト?についての質問です。

コントロールの大きさ指定で割合で指定し、親の
サイズが変わっても柔軟に幅や高さを割合で、
変化させられたらと思っています。

ひとまず書いてみましたが、下記のような
width指定は出来ないようでした。

<StackPanel>
    <Label Width="32">H:</Label>
    <TextBox Width="1*"/>
    <Label Width="32">W:</Label>
    <TextBox Width="1*"/>
</StackPanel>

代替案としてGridを使用していますが、ソースが膨らむ
傾向にあるため、どうにか解決できればとおもっております。

もしよろしければ良い解決策などをいただけますでしょうか・・・
707デフォルトの名無しさん:2009/04/23(木) 16:32:51
> ソースが膨らむ
ColumnDefinitionを沢山書くのが嫌って事か?

だったら、Gridのコンテンツを元にColumnDefinitionを生成するコードを書けばいいじゃない。
708デフォルトの名無しさん:2009/04/23(木) 17:54:36
>>704
WindowとかのリソースにStyle宣言してTargetTypeでRectangle指定すればいいじゃない
個々のRectangleで更にStyleを追加するならBasedOnで指定すれば良い
709デフォルトの名無しさん:2009/04/23(木) 19:53:34
>>707
早い話その通りです、細かいレイアウトの為にいたるところでGridを書くのが面倒だなと。
できればXAMLのみで解決できたらと思っております。
710デフォルトの名無しさん:2009/04/23(木) 23:32:58
質問です。
XAMLで"Width=Auto"をコードで書くとどうなるんでしょうか?
711デフォルトの名無しさん:2009/04/24(金) 10:32:53
UIElement.SetValue(WidthProperty, "Auto")
でいけないかな?
712デフォルトの名無しさん:2009/04/24(金) 10:52:37
コンバータとおさにゃダメよ
ってかWidthの解説読めばAutoがなんに該当するか書いてる
713デフォルトの名無しさん:2009/04/24(金) 11:25:37
>>710
contentが必要とする大きさになるんでないの?
違った?
714デフォルトの名無しさん:2009/04/24(金) 12:15:17
それは測定フェーズでの動作の話。
XAMLから設定した時点でcontentが必要とする大きさに変換されているわけじゃない。
715デフォルトの名無しさん:2009/04/24(金) 13:06:35
>>710
Double.NaNと書いてある。
716デフォルトの名無しさん:2009/04/24(金) 15:00:09
リサイズグリップってどうやれば握れるようになるのかな?

コード的には下記のように書いたら描画はされますが、
グリップ表示部分をクリックしても握ってリサイズできません。

<Window ....中略>
    <Grid>
        <ResizeGrip></ResizeGrip>
    </Grid>
</Window>
717デフォルトの名無しさん:2009/04/25(土) 01:57:18
WindowのResizeModeを設定するのでなくResizeGripをカスタマイズしたいの?
718デフォルトの名無しさん:2009/04/25(土) 03:21:27
719デフォルトの名無しさん:2009/04/28(火) 22:34:04
GridViewにコードから行を追加すればどうすればいいか教えてもらえると助かります。
720デフォルトの名無しさん:2009/04/28(火) 22:37:56
>>697
オーム社から出てたのか・・・
なんでオライリー出さないのか不思議だった
721デフォルトの名無しさん:2009/04/28(火) 22:43:03
>>719
日本語でおk
722デフォルトの名無しさん:2009/04/28(火) 23:36:09
GridViewのAddメソッドに目的のエレメントをnewしたものを指定するとよろしい。
723デフォルトの名無しさん:2009/04/29(水) 00:28:30
Addメソッドないです
724デフォルトの名無しさん:2009/04/29(水) 00:51:44
ちっとは無い頭使わんかい
725デフォルトの名無しさん:2009/04/29(水) 01:37:43
>>723
MSDN読んでこいよw
726デフォルトの名無しさん:2009/04/29(水) 01:56:08
ListViewのItemsSourceに設定したコレクションにAddするんだ
727デフォルトの名無しさん:2009/04/29(水) 02:19:46
なんかわかった風な感じで人バカにしてるけど
722と726で言ってること違うな
728デフォルトの名無しさん:2009/04/29(水) 03:39:23
これと違うのか?
<Window x:Class="WpfGridAdd.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListView x:Name="listview">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Col1}" />
</GridView>
</ListView.View>
</ListView>
</Window>
using System;
using System.Windows;
using System.Collections.ObjectModel;
namespace WpfGridAdd
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
ObservableCollection<MyItem> items = new ObservableCollection<MyItem>();
items.Add(new MyItem("sample1-col1"));
listview.ItemsSource = items;
}
}
public class MyItem
{
private string _col1; public string Col1 { get { return _col1; } set { _col1 = value; } }
public MyItem(string col1) { _col1 = col1; }
}
}
729デフォルトの名無しさん:2009/04/29(水) 08:40:05
>>728
ありがとう。できました。
2chなんかでどうせろくな回答得られないと思ってだめもとで
質問してみたけど、あなたみたいな素敵な人がいるって
捨てたもんじゃないと、嬉しい限りです。

それにしても行追加するぐらいでクラスまで作って
こんなめんどくさいことするなんてなんだかWPFって
どうなのかと思いました。
730デフォルトの名無しさん:2009/04/29(水) 09:19:44
ちなみにセルの内容をコードから変更した場合
itemsに新しい値をいれてそして
listview.ItemsSource = items;
をする事になるのでしょうか?
1行では済まないですか?
それと
listview.ItemsSource = items;
だと1つしかセルを操作してなくても
全部の内容をセットしなおすのはなんだか無駄な気がするので
ここはすっきりできないものでしょうか?
731デフォルトの名無しさん:2009/04/29(水) 09:47:24
ObservableCollectionに要素を追加削除した場合は自動的に反映される
要素の中身をいじった場合はその要素がINotifyPropertyChangedを実装してるか
あるいはいじったのが依存プロパティで実装されてるなら自動で反映される
732726=728:2009/04/29(水) 13:57:56
>>730
> listview.ItemsSource = items;
> をする事になるのでしょうか?

例としてローカル変数にしたけど、itemsをクラス変数にして最初に
ItemsSourceに代入しておけば後で操作しても反映される。のでAdd1行で済むよ。
必須ではないがitemsをプロパティにしてListViewにバインドしてもいい。
<ListView ItemsSource="{Binding Path=Items}" (略
733デフォルトの名無しさん:2009/04/29(水) 15:27:24
ありがとう。
<ListView ItemsSource="{Binding Path=Items}" (略
ただ、これやってみたけど反映されませんでした。

itemsをクラス変数にして最初に
ItemsSourceに代入しておけば後で操作しても反映される
これってどうするんですか?
すいません。こんな僕でよかったら教えてください。

734デフォルトの名無しさん:2009/04/29(水) 16:04:26
まずはどんな努力をしたか書かないと教えたくない。
735デフォルトの名無しさん:2009/04/29(水) 16:24:03
>>734
@<ListView ItemsSource="{Binding Path=Items}" (略 をやった→スルー
AINotifyPropertyChangedで検索
http://msdn.microsoft.com/ja-jp/library/ms229614(VS.85).aspx
にたどりつくも意味不明
B依存プロパティで検索するもいっぱいありすぎてワケワカメ

こんなところです。
736726:2009/04/29(水) 16:57:38
ちなみに>>734は別人。前のコードを一部変更↓追加して<ListView ItemsSource="{Binding Path=Items}">してみて。なおこれはAINotifyPropertyChangedには関係ない。
private ObservableCollection<MyItem> _items = new ObservableCollection<MyItem>();
public ObservableCollection<MyItem> Items { get { return _items; } set { _items = value; } }
public Window1()
{
InitializeComponent();
this.DataContext = this;
_items.Add(new MyItem("sample1-col1"));
}
737726:2009/04/29(水) 17:05:16
>>733
こっちは
> itemsをクラス変数にして最初に
> ItemsSourceに代入しておけば後で操作しても反映される
> これってどうするんですか?
private ObservableCollection<MyItem> _items = new ObservableCollection<MyItem>();
public Window1()
{
InitializeComponent();
listview.ItemsSource = _items;
_items.Add(new MyItem("sample1-col1"));
}
こういうこと。バインドしないというだけで違いはない。
738デフォルトの名無しさん:2009/04/29(水) 23:24:18
726様へ
737のやり方でやりました。
行追加したらいちいち
listview.ItemsSource = _items;
これしなくてもできました。
助かりました。

ただ、各々のセルの値を変更したい場合はどうすればいいのでしょうか?
また、バッグカラーやフォアグランドなどを変更する方法も
教えて頂ければ助かります。
C#のDataGridViewは慣れてるんですがxamlはなかなか大変です。
739726:2009/04/30(木) 00:37:33
>ただ、各々のセルの値を変更したい場合はどうすればいいのでしょうか?
public class MyItem : INotifyPropertyChanged {
private string _col1; public string Col1 { get { return _col1; } set { _col1 = value; NotifyPropertyChange("Col1"); } }
public MyItem(string col1) { _col1 = col1; }
public event PropertyChangedEventHandler PropertyChanged;
internal void NotifyPropertyChange(string propName) {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
で、変更したい時に
_items[0].Col1 = DateTime.Now.ToString("HH:mm:ss");
みたいに。
セルの外観はXAMLでGridViewColumnにHeaderTemplateやCellTemplateを定義すればなんぼでも。
あとは長くなるんでググってね。初めは面倒に思うが難しくないよ。
740デフォルトの名無しさん:2009/04/30(木) 02:20:51
>>726
お世話になっております。726様。
やってみたのですが、変わらないです。
それと、セルの値やバッグカラーはコードから変更したいので
XAML側でやるわけではないのです。
明日というか今日もご返信いただければ嬉しいです。
今日は疲れました。寝ます。おやすみなさい。
741デフォルトの名無しさん:2009/04/30(木) 15:33:33
>>726は世話し過ぎだぞ。
742デフォルトの名無しさん:2009/04/30(木) 15:55:58
別にいいんじゃねーの?
教えることで知らないことも出てくるかもしれないからな。
まあ世話されてる野郎は問題児だが。
743デフォルトの名無しさん:2009/04/30(木) 18:23:42
行追加は問題なくいきます。
ただ、チェックボックスの列があるんですが
trueにしてるのにOFFで表示されます。
それとコードから値変えてるのに変更されません。
内容はこれです。
744デフォルトの名無しさん:2009/04/30(木) 18:25:25
public Window1()
        {
InitializeComponent();
listView1.ItemsSource = items;
        }
745デフォルトの名無しさん:2009/04/30(木) 18:27:12
        private ObservableCollection<PersonName> items = new ObservableCollection<PersonName>();
        public class PersonName : INotifyPropertyChanged
        {
            private bool tf;
            private int bango;
            private string firstName;
            private string lastName;

            public PersonName(bool tt, int ban, string first, string last)
            {
                tf = tt;
                bango = ban;
                firstName = first;
                lastName = last;
            }

            public bool Cb
            {
                get { return tf; }
                set { tf = value; }
            }

            public int Number
            {
                get { return bango; }
                set { bango = value; }
            }
746デフォルトの名無しさん:2009/04/30(木) 18:28:27
public string FirstName
            {
                get { return firstName; }
                set { firstName = value; }
            }

            public string LastName
            {
                get { return lastName; }
                set { lastName = value; }
            }

            public event PropertyChangedEventHandler PropertyChanged;
            internal void NotifyPropertyChange(string propName)
            {
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(propName));
            }
        }
747デフォルトの名無しさん:2009/04/30(木) 18:29:27
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            items.Add(new PersonName(true, items.Count, "kkk", "lll"));
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            items[2].LastName = "まゆみ";
        }
748デフォルトの名無しさん:2009/04/30(木) 18:41:56
変更されたら通知しろよ
NotifyPropertyChangedメソッドが呼ばれてなくて寂しそうじゃねーか
もっと739のコードよく見ろ
749デフォルトの名無しさん:2009/04/30(木) 19:30:27
<Window.Resources>
<DataTemplate x:Key="FirstCell">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=Cb, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
750デフォルトの名無しさん:2009/04/30(木) 19:32:51
<ListView Canvas.Left="460" Canvas.Top="599" Height="146" Name="listView1" Width="299">
<ListView.View>
<GridView x:Name="kanri" AllowsColumnReorder="False" >
<GridViewColumn x:Name="isf" Width="30" CellTemplate="{StaticResource FirstCell}" >
<GridViewColumnHeader Content="選択" Background="Black" Foreground="AliceBlue" />
</GridViewColumn>
<GridViewColumn x:Name="namae" Width="100" DisplayMemberBinding="{Binding Path=Number}">
<GridViewColumnHeader Content="名前" Background="Red" />
</GridViewColumn>
<GridViewColumn x:Name="jotai" Width="70" DisplayMemberBinding="{Binding Path=FirstName}">
<GridViewColumnHeader Content="状態" Background="Green" />
</GridViewColumn>
<GridViewColumn x:Name="jikan" Width="70" DisplayMemberBinding="{Binding Path=LastName}">
<GridViewColumnHeader Content="時間" Background="Green" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
751デフォルトの名無しさん:2009/04/30(木) 19:35:31
>>748
ありがとう。見落としてました。

それぞれ
public bool Cb
{
get { return tf; }
set { tf = value;
NotifyPropertyChange("Cb");
}
}

こういう風にすべきだった。

ちなみにコード書きまくったせいでアクセス規制になってしまったので
他のパソコンから書いてます。
間が空いてすみません。
752デフォルトの名無しさん:2009/04/30(木) 19:36:59
あとはチェックボックスがなぜかtrueで入れてるのに
OFFになってしまいます。
困りました。
753デフォルトの名無しさん:2009/04/30(木) 20:37:14
WPFってMONOで動かないの?
754デフォルトの名無しさん:2009/04/30(木) 20:50:24
今のところWPFを実装する予定はないみたいだね
755デフォルトの名無しさん:2009/04/30(木) 20:56:33
"Windows" Presentation Foundationだからな
あくまでWindows専用のプレゼンテーションフレームワークだろ
756デフォルトの名無しさん:2009/04/30(木) 21:36:07
"Windows" Form
はMONOで動くんだけど
757デフォルトの名無しさん:2009/04/30(木) 22:01:30
>>756
がんばって移植したんじゃないの?
GTK#とWindows.Formsとどっちが安定してるかは知らんけど
758デフォルトの名無しさん:2009/05/01(金) 00:57:28
返信無いな。
726さんに見捨てられちゃったかな。
それか、チェックボックスはやり方知らなかったんだろうか。
759釣られてみる:2009/05/01(金) 01:05:30
RelativeSourceイラネ
760デフォルトの名無しさん:2009/05/01(金) 01:13:31
>>759
ありがとう。助かった。
これで寝られる。
MSDNまるまるこぴぺしたのに。
何だよあれ。
761デフォルトの名無しさん:2009/05/01(金) 01:16:30
ああ、忘れてた。
セルのバッグカラーはコードからどうやって操作するか教えてください。
お願いします。
762デフォルトの名無しさん:2009/05/01(金) 01:51:09
Layout後にSnapsToDevicePixelsを効かせる方法ない?
763デフォルトの名無しさん:2009/05/01(金) 11:52:50
MONOはShilverLightをお勧めしてるよ
764デフォルトの名無しさん:2009/05/01(金) 12:23:23
hイラネ
765デフォルトの名無しさん:2009/05/01(金) 12:55:23
MoonLightか
766デフォルトの名無しさん:2009/05/01(金) 22:19:38
726さんは俺を見捨てたのだろうか。
それとも、コードからセルのスタイル設定する方法は知らないのだろうか。
767デフォルトの名無しさん:2009/05/01(金) 22:36:09
見捨てたんだろう
何せ自分の頭で考えるということを知らない奴を相手にするのは面倒だ
768デフォルトの名無しさん:2009/05/01(金) 23:25:59
>>766
つまらん煽りをいれるなよ
普通の頭持ってる奴なら調べればすぐ分かることだ
それでも分からず教えてもらいたいなら聞き方を学んで来い
769デフォルトの名無しさん:2009/05/01(金) 23:34:37
ぐすん
770デフォルトの名無しさん:2009/05/02(土) 06:25:14
調べてみました。
「Gridview セル」とかGridviewまわりで調べてたので見つからなかったけど
「ListView セル」で調べてみたら
http://msdn.microsoft.com/ja-jp/library/ms750769.aspx
こんなの見つけました。
1行ですぱっと済む方法はないのですね?
がんばります。
771デフォルトの名無しさん:2009/05/02(土) 18:48:15
あれから色々調べたら行単位で変更する方法は載ってるけど
セル単位での変更なんて相当調べたけど見つからないぞ。
何が調べればすぐわかるだよ。

何か人の聴き方が悪いとかのせいにして
自分達の無知を隠そうとしてるだけじゃないか。
772デフォルトの名無しさん:2009/05/02(土) 19:11:43
何コイツ?
773デフォルトの名無しさん:2009/05/02(土) 23:48:35
そもそもセルの色を変えようとすることがおかしい。
そんなわけのわからんことをしようとするから
どうでもいい問題にぶつかるんだ。
セルの色は変えるな。
774デフォルトの名無しさん:2009/05/02(土) 23:50:14
>>773
何だよ、その理屈。ぐすん。
普通のWindowsアプリだったら1行でさくっと済むことなのにさ。
775デフォルトの名無しさん:2009/05/03(日) 00:06:46
なら普通のWindowsアプリを作れば?
お前にWPFは向いてないよ。
776デフォルトの名無しさん:2009/05/03(日) 00:43:09
WPFはウンコ
777デフォルトの名無しさん:2009/05/03(日) 00:58:08
いや、WPFはウピフ
778デフォルトの名無しさん:2009/05/03(日) 01:23:17
素直にDataGrid使えばいいのに
779デフォルトの名無しさん:2009/05/03(日) 01:48:08
>>775
向いてないも何も調べたって資料出てこないぞ。
調べもしないでとか言うくせに、全然資料ないし。
みんなも実はやり方知らなかったジャン。

>>778
え?あったの?はやく言ってよ。
780デフォルトの名無しさん:2009/05/03(日) 02:11:09
見方を変えてみれば
こういうアホでもプログラミング出来る時代になったんだなと
感慨深い
781デフォルトの名無しさん:2009/05/03(日) 02:26:00
>>780
何だよ。アホとかバカとか。
自分もやり方知らないくせに。
782デフォルトの名無しさん:2009/05/03(日) 02:43:35
WPFってMONOの後ろ盾が無いのか
783デフォルトの名無しさん:2009/05/03(日) 10:41:00
素直に聞けば教えてもらえて自分の糧になるのに
自分が知らないことは他人も知らないと決め付けて何も得られないかわいそうな人
784デフォルトの名無しさん:2009/05/03(日) 14:18:32
見栄っ張りばかりのスレ
785デフォルトの名無しさん:2009/05/03(日) 14:40:30
>>782
Silverlight 4あたりで統合されるだろうから、心配いらないんじゃない?
まだ、2,3年かかるかもしれないけど。
786デフォルトの名無しさん:2009/05/03(日) 17:22:26
>>784
だよな
787デフォルトの名無しさん:2009/05/03(日) 21:29:38
WindowクラスにPreviewDragOverとPreviewDropのイベントを加えて
ドラッグアンドドロップできるようにしたんだけど、ウィンドウのタイトルバーへは
なぜかドロップできない。他のアプリ(たとえばVisualStudio)ではタイトルバーへのドロップでも
受け付けるのだけれど、何がまずいんだろうか?
788デフォルトの名無しさん:2009/05/04(月) 00:09:10
みんなやり方知らないみたいだから
妥協策考えた。
ユーザーコントロールでラベル横に並べたやつを作って
スクロールビュワーに追加していくことにした。
これでめんどくさいことなくなる。
789デフォルトの名無しさん:2009/05/04(月) 02:46:47
もう来るなよ
790デフォルトの名無しさん:2009/05/04(月) 09:15:48
>>789
そんな感じだから見栄っ張りとか言われるんだぞ。ぷーん。
791デフォルトの名無しさん:2009/05/04(月) 11:08:58
うぜえ
792デフォルトの名無しさん:2009/05/04(月) 19:22:16
売り上げや売り上げ予測をデータとグラフで表示させる場合って
WPFやるよりSilverlightの方がいいの?

動作の速いほうを希望
793デフォルトの名無しさん:2009/05/04(月) 20:26:02
性能変わらん。
794デフォルトの名無しさん:2009/05/04(月) 20:59:12
性能は違うだろ
795デフォルトの名無しさん:2009/05/04(月) 22:06:37
そんぐらいだったら動作大差ないだろ
796デフォルトの名無しさん:2009/05/04(月) 22:59:58
ブラウザで使わせる予定なかったらWPF
そうでなければSilverlight
でいいだろ
797デフォルトの名無しさん:2009/05/04(月) 23:52:57
ルーティングイベントのバブルとトンネルってどう使い分けたらいいの?
798デフォルトの名無しさん:2009/05/05(火) 00:21:08
下位のバブルに捕まる前に上位で捕まえたければトンネルで
799デフォルトの名無しさん:2009/05/05(火) 11:29:33
Window の HWND は取得できるみたいだけど、
ContextMenu の HMENU は取得する方法ない?
800デフォルトの名無しさん:2009/05/05(火) 12:30:21
正直ルーティングイベントはやりすぎだと思う。
もっさりしてるのはあれのせいだろ。
801デフォルトの名無しさん:2009/05/05(火) 17:44:10
.NET4.0でビットマップフォントが使えるようになるらしい
俺の時代到来
ttp://lol.blog12.fc2.com/blog-entry-422.html
802デフォルトの名無しさん:2009/05/06(水) 08:36:24
DataContext の変更に伴う画面の再描画時、カーソルを砂時計にすることはできるでしょうか?

void Foo(){

 Mouse.OverrideCursor = Cursors.Wait;
 DataContext = (hogehoge.)
 Mouse.OverrideCursor = null;
}

としてみたんですが、再描画するのは Foo を抜けた後らしく砂時計になりませんでした。
803デフォルトの名無しさん:2009/05/06(水) 09:59:24
>>802
レンダリングよりも低い優先順位でキューに突っ込んでおけばいけるはず。試してみて。

Mouse.OverrideCursor = Cursors.Wait;
DataContext = hoge;
Dispatcher.BeginInvoke(DispatcherPriority.Loaded, (Action)(() => { Mouse.OverrideCursor = null; }));
804デフォルトの名無しさん:2009/05/06(水) 14:32:13
表示の優先度の制御に関しての質問です。

現在、Canvas内にImageを適当に配置しております。

これらドラッグして移動させるように作っているのですが、
ドラッグ中はCanvas内で表示と優先度をどのImageよりも
高く設定したいと思っております。

ButtonなどはZIndexプロパティーなどがありますが、
Imageなどには存在していないようです。

表示の優先は後に記述してあるImageの方が高くなるようですが、
これをプログラムから制御する方法などはございますでしょうか?
805デフォルトの名無しさん:2009/05/06(水) 15:02:44
CanvasにImageなんて貼るからそういうことになる。
806デフォルトの名無しさん:2009/05/06(水) 15:09:20
>>805
親要素は何を指定したら良いのでしょうか・・・
807デフォルトの名無しさん:2009/05/06(水) 16:05:46
>>787
UACが絡むときがある
808デフォルトの名無しさん:2009/05/06(水) 16:36:41
>>804
Panel の ZIndex 添付プロパティを使う。XAML なら Panel.ZIndex="10"、コードなら次の通り。

Panel.SetZIndex(hogeImage, 10);
もしくは
hogeImage.SetValue(Panel.ZIndexProperty, 10);

2つとも意味は同じ。親要素は Canvas でも問題ないよ。
809デフォルトの名無しさん:2009/05/06(水) 16:58:49
>>808
早速のお返事ありがとうございます。
無事問題を解決できました。

今までのプログラミング経験からは、なかなか
添付プロパティを意識できなかったので探せていませんでした。

ありがとうございました。

810802:2009/05/06(水) 22:41:06
>>803
神!! 大変勉強になりました。
811デフォルトの名無しさん:2009/05/06(水) 23:41:07
InternetExplorer の アドレスバーのように、横いっぱいに広がるツールバーを
作りたいです。
ToolbarTray に横幅を合わせるだけなら Binding で解決できますが、
同じ Band 上に他のツールバーがあるときは、それを考慮した上でいっぱいに
広げるにはどうしたらよいでしょうか?
812デフォルトの名無しさん:2009/05/08(金) 16:15:00
<ToolBar Width="500">
 <StackPanel Width="500">
  <TextBlock>Hello</TextBlock>
 </StackPanel>
</ToolBar>

とすると、ToolBar のクライアント領域?を超えるため表示されなくなってしまいますが、
クライアント領域を超えない最大幅を設定したい場合はどうしたらよいのでしょう?

813デフォルトの名無しさん:2009/05/08(金) 16:18:10
Autoじゃあかんの?
814812:2009/05/08(金) 20:36:47
<ToolBar Width="500">
 <StackPanel Width="Auto">
  <TextBlock>Hello</TextBlock>
 </StackPanel>
</ToolBar>

Auto にした場合、TextBlock のサイズにサイズにされちゃうんですよね。
StackPanel を TooBar の内寸いっぱいに表示して、TextBlock (と実際には
あといくつかのコントロールを)を StackPanel いっぱいに表示したいって
感じです。
815デフォルトの名無しさん:2009/05/08(金) 20:43:40
ToolBarをRelativeSourceにしてActualWidthをBindingとか
816デフォルトの名無しさん:2009/05/08(金) 21:15:09
ちょっと見た感じ、StackPanelのOrientation付け忘れてない?横表示だよね。 
あとは幅を自動調整で割合一定で表示したいならSTackPanelよりGridがよくないかな。
817812:2009/05/08(金) 22:55:05
>>815

<StackPanel Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ToolBar}},Path=ActualWidth}" Orientation="Horizontal">
としてみましたが、Width="500" とした場合と同じで中身が消えちゃいますね。

>>816

同じ割合ではなく、特定項目以外は固定幅にしたいんです。

 <ToolBar Width="250">
  <StackPanel Width="200" Background="Yellow" Orientation="Horizontal">
   <TextBlock Width="30" Background="Aqua">Hello</TextBlock>
   <TextBox>ABC</TextBox>
   <Button Width="50">OK</Button>
  </StackPanel>
 </ToolBar>

現状はこんな感じで、
1.StackPanel を ToolBar の内寸いっぱいに
2.TextBlock と Button のサイズは固定で TextBox の大きさを連動して変えたい
って感じです。
StackPanel の代わりに DockPanel のほうが適切かな?
1 を実現する方法がわからないので困っています。
818デフォルトの名無しさん:2009/05/09(土) 01:02:32
VisualTree眺めたらStackPanelの直上はToolBarPanelらしいからそれのActualWidthで
子要素1つの大きさ自動ならDockPanelかGridどっちでも
819812:2009/05/09(土) 07:15:26
>>818
ご指摘の方法でいけました。ありがとうございました。

820デフォルトの名無しさん:2009/05/09(土) 10:11:45
WPF のサンプルを見ると #region を使って、メソッドとかプロパティとかをまとめているのを
みかけますが、あれって、自動でやる方法があるのでしょうか?

現在は、手動でならべ変えていて面倒なので良い方法はないかと。


821デフォルトの名無しさん:2009/05/09(土) 13:56:29
ない
822デフォルトの名無しさん:2009/05/09(土) 18:00:25
テキストボックスとのバインディングで悩んでいます。

バインディング時のアップデート方法は何通りか選択でき、デフォルトでは
フォーカスが無くなった時にソースへアップデートされます。

この動作を、テキストボックスに値を入力した後、エンターを入力した
時点でソースへデータをアップデートできたらと思っています。

何か良い方法はございますでしょうか?
823デフォルトの名無しさん:2009/05/09(土) 18:09:27
UpdateSourceを明示的に呼び出せば?
824デフォルトの名無しさん:2009/05/09(土) 21:05:49
>>812に便乗、DockPanelの子に指定するとコントロールの外観(例えばButton)が変わるよね?
手動で設定するしかないんだろうか。
825デフォルトの名無しさん:2009/05/10(日) 06:51:57
TabControl はタブが一行に収まりきらないと複数行表示になりますが、
これを一行でおさめたいです。

調べた結果、TabPanel のかわりのカスタムコントロールを自分で作るしかない
ように思われるのですが、xaml だけで済ませるほうほうがあったら教えてください。
826デフォルトの名無しさん:2009/05/10(日) 12:50:31
ItemsPanelにWrapPanel使えばなんとかなるんじゃないか
827デフォルトの名無しさん:2009/05/10(日) 22:46:16
>>823
どもです、KeyUpイベントにてUpdateSourceを使用しましたら実現できました。
828デフォルトの名無しさん:2009/05/12(火) 08:16:56
New York Times Reader
https://timesreader.nytimes.com/webapp/wcs/stores/servlet/AppLogin?storeId=10001&catalogId=10001

1.0 WPF製 ← 廃止

Silverlightで作り替え ← 中止

2.0 Adobe AIR製 ← 今ここ
829デフォルトの名無しさん:2009/05/12(火) 08:47:04
2.0 Adobe AIR製 ← 今ここ 
 ↓
Ajax
 ↓
Flash
 ↓
NewYorkPostに買収される
830デフォルトの名無しさん:2009/05/12(火) 15:55:37
独自のテキストプロパティを作成したくて以下のように依存プロパティを定義して
XAMLから
<TextBlock Text="test" />
のようにしてもMy text testと表示されません。
何か追加の処理が必要ですか?

namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
}

public class TextBlock : DependencyObject
{
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(TextBlock));

public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, "My text" + value); }
}
}

}
831デフォルトの名無しさん:2009/05/12(火) 16:20:51
ExpressBlendやFlashのスコアウィンドウと同じようなUIを作成しようと思っております。
実装案としまして、下記のような物を考えました。

○<Grid>を作成(トラックをrow、フレームをcolumnとする)。
○グリッドを<Separator>で分割して格子を作成。
○各トラック上に存在するオブジェクトをLabelにて表現。

WPFの経験が浅いので、このようにしか思いつきませんでした。
もしより良い方法がございましたらお教えいただけますでしょうか・・・。

よろしくお願いいたします。
832デフォルトの名無しさん:2009/05/12(火) 20:34:51
以下のような自作のコントロールを作って
XAMLに追加しようとすると、UIElementCollectionに追加できません。
とエラーになります。型UIElementの項目しか駄目みたいですが
どうすればUIElementの項目にできるのでしょうか?

namespace CustomLib
{
public class Widget : DependencyObject
{
public static readonly DependencyProperty MyTextProperty =
DependencyProperty.Register("MyText", typeof(string), typeof(Widget));

public string MyText
{
get { return (string)GetValue(MyTextProperty); }
set { SetValue(MyTextProperty, "My text" + value); }
}
}
}
833デフォルトの名無しさん:2009/05/12(火) 21:00:44
>>830>>832は同一人物っぽいけど

>>830
DependencyObjectは外見を持たない

>>832
継承ってわかる?
UIElementCollection調べた?
834デフォルトの名無しさん:2009/05/12(火) 21:14:35
>>833
レスありがとうございます。
同一人物です。

何か見当違いのことをやろうとしていたみたいです。

失礼しました。
DependencyObjectをFrameworkElementが継承して
いました。
835デフォルトの名無しさん:2009/05/13(水) 00:26:20
エクスプローラをアイコン表示にしてファイルを選択するとファイル名のテキスト部分の
背景が青、前景が白になり、アイコンは青みがかったような表示になりますが、あれと同じ
ように表示する機能を作っています。
現状、項目が選択された時にテキスト部分の背景と前景を変える事はできたのですが
アイコンを青みがかったような表示にする方法が分からず、どうすれば実現できるでしょうか?
(itemの構成は、StackPanelにImageとCanvasを配置しCanvasの中にTextBlockを
 置いています。Imageのソースはpngファイルです。)
836デフォルトの名無しさん:2009/05/13(水) 13:30:19
上に半透明のRectangleかなんかでも置けば?
// Adornerでもいいかな
837デフォルトの名無しさん:2009/05/13(水) 15:25:19
コードビハインドが何行くらいになったら分割を検討する?

OutlookExpress みたいな3ペインのウィンドウで作っていて、
500 行超えたので見通し悪いので、ペインごとに UserControl に
しようとかと考えてるんだが。

それぞれのペインはそのウィンドウでしか使わないので、
再利用性とかは考えなくてもいい。

こんな場合、お前らどうする?分割する?しない?

MVVM モデルで作っているという前提でお願いします。

838835:2009/05/13(水) 19:38:26
>>836
Adornerで実現できました
ありがとうございました
結構悩んでたので感無量・・・
839デフォルトの名無しさん:2009/05/15(金) 09:20:49
TreeViewItem に対して右ドラッグ&ドロップしてみた。
DragEnter,DragOver 時は KeyStatets==RightMouseButton だったんだけど、
Drop 時だけは、KeyStatets==None になってた。

Drop 時の DragEventArgs からはどのマウスボタンでドラッグされたかは
わからないということ?
840デフォルトの名無しさん:2009/05/15(金) 09:56:45
まあDropされたってことはすでにボタンは解放されてるわけだしな
DragMoveでの最終値を保存しとけば?
841デフォルトの名無しさん:2009/05/16(土) 23:27:49
始めたばかりだけど…スプレッドシートがないのにちょっとビックリ。
これって何かの意図があるんでしょうか?
842デフォルトの名無しさん:2009/05/17(日) 08:25:21
ListViewのGridView表示を使う。
DataGridが欲しいのであればWPFToolkitをどうぞ
>>1のリンクは少し古いので注意(最新はMarch 2009)
843デフォルトの名無しさん:2009/05/17(日) 08:40:45
>841
Microsoftの予想では、もっとビジネスアプリの割合は少ないはずだったらしい。
844デフォルトの名無しさん:2009/05/17(日) 17:28:52
トン。少ないって…それもすごい予想ですね。

編集の必要があるのでGridViewにTextBoxを入れて編集可能に、とやってみたのですが、
選択時にも背景色が白のまま/前景色が黒のままだったり、
テキストボックス部分を選択しても行選択にならなかったり、
キーボード操作が非常に不便で使い物になりそうもない or
使い物になるようにするのはかなり大変そうでした。WPFToolkitも検討してみます。
845デフォルトの名無しさん:2009/05/18(月) 01:24:00
Gridの中にLineを描画したいと思っています。

    <Grid Grid.Row="2" Grid.Column="0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Name="_aaa" Width="192"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Name="_bbb" Height="22"/>
            <RowDefinition Height="18"/>
            <RowDefinition Height="18"/>
        </Grid.RowDefinitions>

        <Line Grid.Column="0" Grid.Row="0"
          X1="0"
          Y1="{Binding ElementName=_bbb, Path=ActualHeight}"
          X2="{Binding ElementName=_aaa, Path=ActualWidth}"
          Y2="{Binding ElementName=_bbb, Path=ActualHeight}"
          Stroke="Black" StrokeThickness="10"/>
    </Grid>

続きます・・・
846デフォルトの名無しさん:2009/05/18(月) 01:26:43
エディット中に表示されるプレビュー画面では、
Lineはちゃんと表示されております。

しかし、コンパイルして起動すると描画されないので困っています。

Lineの座標指定をバインディングではなく、
即値で指定すると表示される事を確認しました。

バインディングの行い方に問題があるようなのですが、
いまいちその作法がわかりません。

もしよろしければ、解決方法をお教えいただけますでしょうか・・・
847デフォルトの名無しさん:2009/05/18(月) 09:42:57
<Canvas Name="Canvas1" Grid.Column="0" Grid.Row="0">
 <Line 
   X1="0" 
   Y1="{Binding ElementName=Canvas1, Path=ActualHeight}" 
   X2="{Binding ElementName=Canvas1, Path=ActualWidth}" 
   Y2="{Binding ElementName=Canvas1, Path=ActualHeight}" 
   Stroke="Black" StrokeThickness="10"/>
</Canvas>
848デフォルトの名無しさん:2009/05/18(月) 15:05:40
<Grid Grid.Row="2" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Name="_aaa" Width="{Binding Path=Value, ElementName=slider, Mode=Default}"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Name="_bbb" Height="22"/>
<RowDefinition Height="18"/>
<RowDefinition Height="18"/>
</Grid.RowDefinitions>

<Line Grid.Column="0" Grid.Row="0"
Y1="{Binding ElementName=_bbb, Path=ActualHeight, Mode=OneWay}"
X2="{Binding Path=ActualWidth, ElementName=Window, Mode=OneWay}"
Y2="{Binding ElementName=_bbb, Path=ActualHeight, Mode=OneWay}"
Stroke="Black" StrokeThickness="35"/>

<Slider VerticalAlignment="Bottom" Grid.Column="0" Grid.Row="3" x:Name="slider" Maximum="500" Value="200" Grid.ColumnSpan="2" Grid.RowSpan="1"/>
</Grid>

こんな感じなら値が変わったときに適応
849846:2009/05/18(月) 16:08:04
レスありがとうございます。

>>847
同じように記述しましたら無事描画できました。
Canvasに入れないと描画出来ないのは仕様?なのかな。

もしよろしければこの辺に言及しているWebの資料がございましたら、
紹介していただけますでしょうか・・・。

>>848
多分スライダーにあわせてLineが伸びるように、実装されて
いると思われますが、Lineは表示されませんでした。

申し送れましたが環境は、Visual C# 2008 Express Edition、
OSはXPでSP2 を当てております。

StandardやProfessionalとは動作が違う?のかな。
850デフォルトの名無しさん:2009/05/18(月) 18:32:37
>>849
もっと自分で勉強したほうがいいんじゃねーの?
851デフォルトの名無しさん:2009/05/19(火) 12:01:04
環境によってできないとか、

<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" x:Name="Window" Width="640" Height="480">
<Grid Grid.Row="2" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Name="_aaa" Width="{Binding Path=Value, ElementName=slider, Mode=Default}"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Name="_bbb" Height="22"/>
<RowDefinition Height="18"/>
<RowDefinition Height="18"/>
</Grid.RowDefinitions>

<Line Grid.Column="0" Grid.Row="0"
Y1="{Binding ElementName=_bbb, Path=ActualHeight, Mode=OneWay}"
X2="{Binding Path=ActualWidth, ElementName=Window, Mode=OneWay}"
Y2="{Binding ElementName=_bbb, Path=ActualHeight, Mode=OneWay}"
Stroke="Black" StrokeThickness="35"/>

<Slider VerticalAlignment="Bottom" Grid.Column="0" Grid.Row="3" x:Name="slider" Maximum="500" Value="200" Grid.ColumnSpan="2" Grid.RowSpan="1"/>
</Grid>
</Window>
852デフォルトの名無しさん:2009/05/20(水) 01:02:16
>>849
実行時にLineの値を確認すると上手く値を持ってこれておらずBindingが
機能してませんね。
今回の状況では実行に変わるソースの値で更新しようとしてますが、これには
ソース側のプロパティが依存関係プロパティでないとダメなのかな。

Canvas.ActualHeightはFrameworkElementから継承した依存関係プロパティを
持ってるね。
一言で言うとソースにColumnDefinitionを選んだのがよろしくなかった、と
853デフォルトの名無しさん:2009/05/20(水) 08:27:25
C++/CLIでxbapから呼べるクラスライブラリってつくれるんでしょうか。
/NODEFAULTLIB:msvcmrt.libとか/clr:safeとか適当にやっても
「インスタンスを作成できません。」とでてしまいます・・・
854デフォルトの名無しさん:2009/05/20(水) 09:48:29
DataGridのドキュメントがMSDNに来てるね
855849:2009/05/22(金) 01:14:05
>>852
レスありがとうございます。
ColumnDefinitionはependencyObjectを継承しているので、
てっきりすべてのプロパティーは依存関係プロパティーだと思っておりました。

もしよろしければ見分ける方法をお教えいただけたられしいです。
856849:2009/05/22(金) 02:38:01
>>852
MSDNをもう一度呼んでみましたが、プロパティーの解説に
「依存関係プロパティーです」との但し書きが在る無しで見分ければ良いのでしょうか?
857デフォルトの名無しさん:2009/05/23(土) 08:51:00
TextのBinding.UpdateSourceTriggerがPropertyChangedじゃなくてLostFocusだという理由は
> 通常、テキスト フィールドには適していません。各キーストロークの後に更新を行うと、
> パフォーマンスが低下する可能性があり、ユーザーは新しい値をコミットする前に BackSpace
> キーを使用して入力エラーを修正するという通常の操作ができなくなります。
分からなくはないけど…パフォーマンスはともかく、
エラー表示が一旦出てもそのままユーザは修正できるか大きな問題ではない気が。

フォーカスの順序がテキストボックス→ボタンとなっていて、
ボタンのCommandのCanExecuteがテキストボックスの内容に依存している場合、
テキストボックスでTabを押したときにボタンに移動できない気が。
こっちのほうがずっと致命的じゃないか?
858デフォルトの名無しさん:2009/05/23(土) 08:54:10
訂正
×テキストボックスでTabを押したときにボタンに移動できない気が。
○ボタンが無効な状態でテキストボックスの入力を(ボタンがが有効になるよう)修正し、
 そのままTabを押したときにボタンに移動できない気が。
859デフォルトの名無しさん:2009/05/23(土) 23:25:31
Path で Binding してあるときは、OnPropertyChanged で変更を通知できるけど、
Converter で Binding したときってどうやって View に変更を通知するの?
860デフォルトの名無しさん:2009/05/23(土) 23:46:31
ModelViewからViewへの通知は、Converterありでもなしでも
INotifyPropertyChangedでできるはずだけど、そういうことじゃないの?
861859:2009/05/24(日) 21:13:02
>>860
View 側には {Binding Path=Foo} としたときは、
ViewModel 側で、OnPropertyChanged("Foo") で View は更新されます。

View 側に、{Binding Converter={StaticResource fooConverter}} としたときは、
OnPropertyChanged では通知のしようがないとおもってたんだけど
ちがうの?
862デフォルトの名無しさん:2009/05/24(日) 21:22:54
単純なテストコードですぐ確認できるんだから聞く前に試そうぜ
863デフォルトの名無しさん:2009/05/24(日) 22:42:50
Pathでバインド、Converterでバインドってそういうことか。
バインドを理解していないような気がするが。
  Pathを省略=オブジェクト全体をPathに指定
  Converterを省略=デフォルトのコンバータをConverterに指定
省略できるだけで、両方とも常にやっている。

で、オブジェクト全体の変更通知(PropertyChangedの第二パラメタ=null)
すればいいんじゃないか?やったことないけどな。
864デフォルトの名無しさん:2009/05/24(日) 23:19:34
・バインドオブジェクト自体を変更する
・BindingExpression.UpdateTargetを呼び出す
のどっちかかな
865859:2009/05/25(月) 22:40:21
Path と Converter って排他で指定するんだとばかり思ってました。
勉強になりました。
866デフォルトの名無しさん:2009/05/26(火) 01:37:01
デバイスに依存しない単位って何のために用意されてるの?ややこしい
867デフォルトの名無しさん:2009/05/26(火) 02:00:27
デバイスに依存しないためだろjk
868デフォルトの名無しさん:2009/05/26(火) 18:00:28
マウスに関する質問です。

特定コントロールの原点からのマウスカーソル座標を得たいと思っています。

コントロール内にマウスがある場合はMouseMoveなどのイベントで、
座標情報を取得できますが、そのコントロール外にカーソルが出てしまうと
イベントが発生しないため取得が出来ませんでした。

マウスカーソルがWindowの外に出てからも、特定コントロールからの
マウスカーソル座標を得たい場合、どのような手法があるのでしょうか?

869デフォルトの名無しさん:2009/05/26(火) 18:25:25
GetCursorPos[Win32API]とPointFromScreen
870デフォルトの名無しさん:2009/05/26(火) 22:55:24
むしろCaptureMouseメソッドかな
871デフォルトの名無しさん:2009/05/26(火) 22:59:29
>>869
>>870
どもです、さっそく調べてみます。
872デフォルトの名無しさん:2009/05/27(水) 14:22:47
>>870

・MouseDown
・MouseUp

内で、

・CaptureMouse();
・ReleaseMouseCapture();

を呼び出したら希望通りの動作を実現できました。
ありがとうございました!
873デフォルトの名無しさん:2009/05/27(水) 20:31:07
IDataErrorInfoの使い方ですが、
複数の値が関係してOK/NGが判定される場合どうすればいいんでしょう?

最大値を入れるテキストボックスと、最小値を入れるテキストボックスがあり
「大小関係に矛盾があったら両方にエラーを出せ」と要求されています。

そのまま最大値と最小値を個別に実装すると、
最大値を変更して"最大値<最小値"に設定した場合、最大値側のほうにだけエラーが表示されます。
(変更されなきゃエラーの判定なんてされないのだから当然でしょうが)

今は最大値を変更されたら、PropertyChangedを使って
最小値を変更したように見せかけエラーを表示させています。
この場合、ViewとViewModelの値が違う場合(数値以外が入力された場合等)に、
Viewに表示されている値が、ViewModel側の値に強制的に変わってしまいます。

どうにも挙動が微妙に怪しくなってしまうので、そもそも使い方が間違っているような気が…
874デフォルトの名無しさん:2009/05/30(土) 12:21:32
 <Trigger Property="DockPanel.Dock" Value="Left">
  <Setter ... />
  (略) 
 </Trigger>
 <Trigger Property="DockPanel.Dock" Value="Right">
  <Setter .../>
  (略) 
 </Trigger>
↑こんな風に xaml 書いてるんですが、Setter 部分は共通なのでできれば Trigger を一つにしたいです。
 <Trigger Property="DockPanel.Dock" Value="Left" or "Right">
みたいに書きたいってことなんですが、なにか良い方法ありますか?


875デフォルトの名無しさん:2009/05/31(日) 16:01:22
PathってDataプロパティを使って長さを直接指定するので、Rectangleや
ボタンなどのように親パネルの大きさに合わせることができないってずっと
思い込んでいたのだが、Stretchプロパティを使えば同じように自動で
拡大縮小させられるんですな。
知りませんでしたよ。
876デフォルトの名無しさん:2009/05/31(日) 17:16:21
ttp://blogs.msdn.com/jaimer/archive/2009/05/27/wpf-4-and-net-framework-4-beta-1-list-of-features-totrack.aspx

>>801にある新しいClearTypeってClearTypeHintってやつ?
beta1ではonになってるはずだが、相変わらずMSゴシックはボケボケだ。
877デフォルトの名無しさん:2009/05/31(日) 17:19:02
あとWin7のXPS Viewerが・・・とか書いてあるが、
あれは7ではWPFではなくネイティブプログラムになったぞ
878デフォルトの名無しさん:2009/05/31(日) 17:41:39
>>876
Text enhancements の方なんじゃね?
中の人も Beta2 でめっちゃ良くなるよって言ってるし
ttps://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=455110&wa=wsignin1.0
879デフォルトの名無しさん:2009/05/31(日) 17:45:03
ていうかちゃんと>>876のリンクの下のほうに書いてあるじゃないか

Text enhancements
WPF 4.0 Beta 2 introduces a new text rendering stack which allows for much clearer text rendering.
This change adds the necessary knobs to allow WPF text to look virtually indistinguishablefrom Windows’ traditional GDI-rendered text.
The clarity improvements also dramatically improve readability for many East Asian languages.
880デフォルトの名無しさん:2009/05/31(日) 17:50:42
書いてあったね。すまん。表しか見てなかった。
881デフォルトの名無しさん:2009/05/31(日) 17:58:38
フォントレンダリングに腐心してくれなくても、ギザギザビットマップフォントが使えるようになればそれで満足なんだけどなぁ
882デフォルトの名無しさん:2009/05/31(日) 18:24:18
なんでビットマップフォント使えなくしたの?
883デフォルトの名無しさん:2009/05/31(日) 20:38:29
使えなくしたんじゃなくて使えるようにしてないだけ
独自レンダリングなんだから
884デフォルトの名無しさん:2009/05/31(日) 21:20:15
>>866
四半世紀くらい前に出版されたInside Macintoshって本にその意義が
載っていたのを思い出した。懐かしい。
885デフォルトの名無しさん:2009/06/02(火) 11:32:00
表示内容の切り替えなんだけど、
グリッドごとにくくって「Visible=Hidden、Visible」を指定して切り換えているんだけど、もっとうまい方法ない?
アニメーション指定とかするととてもめんどくさい。

なんかWPF用のアニメーションを考慮したタブコントロールができたらいいのに・・・
886デフォルトの名無しさん:2009/06/02(火) 11:41:13
Rectangle の IsVisible って get しかできないんだけど、
表示/非表示を切り替えるにはどうしたらいいの?
887デフォルトの名無しさん:2009/06/02(火) 11:50:00
Visibility でどうか
888デフォルトの名無しさん:2009/06/02(火) 12:02:03
>>887
即答ありがとう。これでいけそうだわ。
889デフォルトの名無しさん:2009/06/05(金) 11:01:44
890デフォルトの名無しさん:2009/06/05(金) 13:35:01
>>889
スレチのようなスレチじゃないような・・・
そういえばAvalonってWPFの事だっけ?それともAero?Direct2D?
891デフォルトの名無しさん:2009/06/05(金) 13:46:49
AvalonはWPFの事だね
892デフォルトの名無しさん:2009/06/05(金) 19:37:00
ワーニングについての質問です。

ユーザーコントロールを作成した結果、
下記のワーニングが出力されました。


C:\Documents and Settings\onamae\Local Settings\
Application Data\Temporary Projects\DirComp\Ruler.xaml.cs
 の型 'DirComp.Ruler' は、
c:\Documents and Settings\onamae\Local Settings\
Application Data\Temporary Projects\DirComp\bin\Release\DirComp.exe
のインポートされた型 'DirComp.Ruler' と競合しています。
C:\Documents and Settings\onamae\Local Settings\
Application Data\Temporary Projects\DirComp\Ruler.xaml.cs
で定義された型を使用しています。
C:\Documents and Settings\onamae\Local Settings\
Application Data\Temporary Projects\DirComp\Ruler.xaml 4 26 DirComp


Rulerと言うユーザーコントロールは、
DirCompと同一アセンブリとなっています。

競合を解決したいのですが、どのように回避してよいかわかりません。
良い解決方法がございましたらお教えいただけますでしょうか・・・。
893デフォルトの名無しさん:2009/06/06(土) 22:27:32
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:Window1}},Path=TestProperty}" />
といった感じで書くと、”Mode は、RelativeSource に対して指定される必要があります。”というエラーが出ます。
しかし、ビルドはなぜか成功しますし、一回ビルド通るとエラーが消えます。
これは何が原因でしょうか?
894デフォルトの名無しさん:2009/06/06(土) 22:46:07
xaml編集に関してはIntelisenceがアホだから。

似たような現象はあちこちで起きていない?
895デフォルトの名無しさん:2009/06/06(土) 23:41:37
MVVMでプログラムを作っていて、
ViewModel 同士で状態の変化を伝えたい場合、
お前らどうする?

1.すでに INotifyPropertyChanged を実装しているのだから、それを使う。
2.OnXXXXChanged みたいな event を実装する。

という2種類の方法が考えられると思うんだが、
前者はすでに実装されているから、手間は少ないがどのイベントが変更されたか
文字列で判定するのでパフォーマンス的に不利。
後者は高速だが実装が手間。

だから、パフォーマンスが問題にならない場合は前者を
使っておけばよいという認識であってる?
896デフォルトの名無しさん:2009/06/06(土) 23:56:25
>>895
自分も悩んだけど、
 ViewModelはモデルにかぶせて、ViewのためのI/Fを提供するもの
  =ViewModelはそれぞれがモデルを操作。必要ならモデルの状態変化を受け取ってViewModelも変化
ってことで、直接ViewModel同士でのやりとりは避けていた。
可能性としては、モデルを介さずにViewModelの表示用データ(編集中のデータとか)間で
やりとりが生じる場合も考えられるけど、そんな状況ならそもそもViewModelを分離する必要があるのだろうか。

これに限らず、ViewModelは、Viewに合わせるために作りが汚くなりがちだし、
処理が散らばりがちだし上手くまとめれんw
897デフォルトの名無しさん:2009/06/07(日) 00:30:17
>>894
なるほど、そういう事でしたか・・・。
確かにインテリセンス、頻繁に出なくなったりします。
結構この機能に頼ってる自分には辛いですw
898デフォルトの名無しさん:2009/06/07(日) 01:11:42
他のプロジェクトで作成したユーザーコントロールを、現在作業中の
プロジェクトにインポートして使用したいと思っています。

対象プロジェクトをインポートして参照設定行いましたが、xmlns:n="clr-namespace:XXApp"
のように名前空間を設定しても利用できませんでした。

CLR 名前空間が定義されていません。clr-namespace URI が、
アセンブリに含まれていない名前空間 'XXApp' を参照しています。

との事でなのですが、どのように解決すればよいでしょうか?

環境は VS C# ExpressEdition です。
899デフォルトの名無しさん:2009/06/07(日) 01:19:09
>>898
どのアセンブリの名前空間をインポートするか指定しないといけない。
xmlns:sys="clr-namespace:System;assembly=mscorlib"
900デフォルトの名無しさん:2009/06/07(日) 02:13:01
>>899
ありがとうございます。

試してみましたが症状は変わりませんでした。

あとインテリセンスには、インポートしたいアセンブリの名前が
表示されないので、インポートの行い方がまずいのでしょうか・・・。

テストクラスをインポート対象のプロジェクトに書いて、
作業プロジェクトのC#ソースから名前空間を指定した場合は、
ちゃんと利用できていることは確認しました。

あと気になることがひとつあります。

VS C# 2008 ExpressEdition は、プロジェクトのテンプレートに、
「WPF ユーザー コントロール ライブラリ」が在りませんが、
このためインポート機能もカットされているとかあるのかな・・・。
901デフォルトの名無しさん:2009/06/07(日) 17:16:14
WPFって全く普及する気配がないんだけれど、このままいつものごとく
放置され無かったことにされるMSのテクノロジの山への葬列に加わる
ことになるのかいな。

ソフトウェア・アーキテクチャとしては考え方はよかったのかもしれないけれど、
なんだか分かりにくいよね。 ウェブアプリケーションまで飲み込もうと、xbapみたいな
もんまでスコープにしたもんだから、プログラマからすると、単に使い勝手が悪く
融通の利かない環境になってしまったような気がする。
902デフォルトの名無しさん:2009/06/07(日) 17:18:58
いや、パフォーマンスさえよければすぐにでも使いたいんだが。
Silverlightは使われそうだけど、WPFはどうなるのかなー
903デフォルトの名無しさん:2009/06/07(日) 17:36:09
だからxamlと切り離してFormsにぶつければ一気に普及するとあれほど(ry
904デフォルトの名無しさん:2009/06/07(日) 17:38:54
Silverlightは3からブラウザの外で動かせるようになるからな
あとはMSがセキュリティの制限を解除できるようにしさえすればWPF完全終了
905デフォルトの名無しさん:2009/06/07(日) 18:56:39
セキュリティ制限が解除されて使えるようになるのはファイルアクセス位だろ。

DllImportとかは機能自体が削除されているのでどうにもならん。
906デフォルトの名無しさん:2009/06/07(日) 19:25:54
ビットマップフォントに対応すればそれなりに使われると思うよ

やっぱり見た目って大事だから
907デフォルトの名無しさん:2009/06/07(日) 23:25:30
ttp://msdn.microsoft.com/ja-jp/library/ms771362.aspx
上記のサンプルをビルドしたところ、
"〜\Resources.Designer.cs' を開くことができませんでした ('エラーを特定できません ')。
というようなエラーが出ました。
どのようにしたら実行出来ますでしょうか?
908デフォルトの名無しさん:2009/06/08(月) 00:05:30
妄言がはなはだしいな。あーすれば普及するこうすれば普及するとか。
特にビットマップフォントはかんけーねーよ。
海外でも普及してねーだろーが。
909デフォルトの名無しさん:2009/06/08(月) 01:20:47
>>903
XAMLがWPFの大きな魅力の一つなのに切り離してどうするw
910デフォルトの名無しさん:2009/06/08(月) 21:15:04
WPF のコンテキストメニューにはグループとか排他項目とかないの?
911デフォルトの名無しさん:2009/06/09(火) 11:06:09
みんなの作っているWPFはアニメーション付ける派?つけない派?気持だけど付けてる派?
912デフォルトの名無しさん:2009/06/09(火) 11:33:31
付けるけどOFFにも出来るようにする。
913デフォルトの名無しさん:2009/06/09(火) 11:44:59
っていうことは、ザムルの外にアニメーション指定の命令をするかを書くのか。
めんどくさくない?w

挑戦したんだけど、どうもうまくまとめられずいろんなところが狂いだしてどうすることもできなくなった・・・
気をつけてw
914デフォルトの名無しさん:2009/06/09(火) 11:46:13
ザムル・・・
・・・ある!
915デフォルトの名無しさん:2009/06/09(火) 13:28:14
ストーリーボードでボタンにアニメーションを付けた。
916デフォルトの名無しさん:2009/06/09(火) 15:53:40
アニメーションの切り替えはテンプレート丸ごと差し替えたほうがよくね
917デフォルトの名無しさん:2009/06/09(火) 16:32:47
アニメーションの効果的な使い方がよく分からんし、何よりセンスがない。
って事で、ユーザーの邪魔にならない所でヒッソリ使う程度だな。

UIデザインをこなせるデザイナがもっと増えてくれれば、俺の付け焼刃のデザインなんて使わなくて済むのに
918デフォルトの名無しさん:2009/06/10(水) 01:32:31
遅ればせながらこれからWPFの勉強を始め用と考えています。
参考書籍はどの順番で読めばいでしょうか?
 (A)エッセンシャルWPF
 (B)黒XAMLプログラミング
 ※赤坂本は破棄するとして、日向本も索引にDependencyが無いので論外とします。
またはMSDNの概説・サンプルの方が情報が新しく併用するのがいいのでしょうか?
919デフォルトの名無しさん:2009/06/10(水) 04:28:06
>918
Aは一番最初。ただし、うんちくや背景思想を知りたい人だけが読めばいい。
920デフォルトの名無しさん:2009/06/10(水) 07:11:56
たいした金額じゃないんだから全部買っとけ
921デフォルトの名無しさん:2009/06/10(水) 07:58:15
DrawingImage を表示させているボタンがあるんだけど、
IsEnabled = false にしただけでは、灰色になってくれないのね。

DrawingImage を灰色にはどうしたらいいですか?
922デフォルトの名無しさん:2009/06/10(水) 08:21:52
背景色が灰色なら、半透明にするのが一番楽だな
923デフォルトの名無しさん:2009/06/10(水) 12:14:16
WPF IN Action読んだ人いませんか?
いたら教えて欲しいのですが、P279(Chapter12 Validator)のとおりに
コードを入力し、説明にあるとおり同じ値を入力後、フォーカスを移動
してもデフォルトの赤枠が表示されません。他に設定が必要なのでしょうか?

<TextBox>
<Binding Path="Title">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox>
924923:2009/06/10(水) 12:19:50
環境は
Win XP SP3
.NET3.5 SP1
です。
925デフォルトの名無しさん:2009/06/10(水) 14:09:46
>>923
はてなポイントつかって向こうで聞けばいいんじゃね?
926デフォルトの名無しさん:2009/06/10(水) 14:24:28
>>925
レスどうも。
そうですね、サポートページ探してみます。
927923:2009/06/10(水) 16:04:41
自己解決しました。
928デフォルトの名無しさん:2009/06/10(水) 16:44:53
自己解決って報告するくらいなら情報共有のために解決内容かけよ。
929デフォルトの名無しさん:2009/06/10(水) 17:00:51
>>928
そうですね。
単なる操作の勘違いでした。
あるレコードを選択後、Titleテキストボックスに表示された
値を存在する別のレコードのTitle値に設定すればOKです。
930デフォルトの名無しさん:2009/06/10(水) 22:41:40
XAMLでUIが書けるのはいいけど、かっこいいグラフィックにするやり方がよくわからない

何か別にOffice風だとか○○風だとかのデータを持ったものを指定するだけとかの仕組みが有れば良さそう
931デフォルトの名無しさん:2009/06/10(水) 22:47:19
そういうのをXAMLでゴリゴリ書くと泣きたくなるからなぁ。
そういうのは、Blendでかくもんじゃない?
932デフォルトの名無しさん:2009/06/10(水) 23:04:22
snow leopardのExposeみたいのやろうと思ったら結局コードがりがりかくことになるよなぁ・・・
まぁやっとこロジックごりごりかくべき所とXAML的にやるべき所の見分けが付いてきた
933デフォルトの名無しさん:2009/06/10(水) 23:44:32
>>930
そういう仕組みは既にあると言っていいと思う。
ttp://d.hatena.ne.jp/Yamaki/20061106/1162787221
まあ、誰がテザインを作ってくれるのかというのが問題だけど。
934デフォルトの名無しさん:2009/06/11(木) 11:34:37
WPFとWindows.Formとどう使い分ければいいの?
長期的にはWPFに全面移行するのかな
935デフォルトの名無しさん:2009/06/11(木) 11:39:40
Windows2000でも動かしたければWinForm使うしかない。
そうでないなら好きなほう使えばいい。
936デフォルトの名無しさん:2009/06/11(木) 12:03:06
>>935
2000では動かないの?98は無理だけど。
937デフォルトの名無しさん:2009/06/11(木) 12:23:40
>>936
2000には.NET 2.0までしか提供されない。
という事で、WPFだけじゃなくてLINQなんかも使えない。
938デフォルトの名無しさん:2009/06/11(木) 13:13:04
>>937
なるほど、そうなんだ。
thx
939デフォルトの名無しさん:2009/06/11(木) 20:27:53
Windowsって入ると短命なイメージが付くから失敗だったな
ただのPFで良かった
940デフォルトの名無しさん:2009/06/11(木) 23:35:05
>>935
まさにそういう理由で、客のユーザーが2000使ってる人まだいるってことで.NET2.0しばりですよ・・・
941デフォルトの名無しさん:2009/06/12(金) 00:00:51
WPFで今スライドショーっぽいものを作っているんですが、うまく画像が表示されずに困っています。
<Image Margin="0" Name="img"></Image>
こんな感じでImageタグを用意しておき、img.Sourceを変更させてやろうと思っているのですが、画像が表示されません。
ウィンドウをShowする前にimgにソースをセットしておけば、その画像だけは表示されるのですが、それ以外は表示されません。
ソースを変更→スレッドで5秒ぐらいとめるなどという処理方法で書いているのですが、どこに問題があるのでしょうか?
どなたか分かる方よろしくお願いします。
942デフォルトの名無しさん:2009/06/12(金) 00:17:41
>スレッドで5秒ぐらいとめる
これがなんか怪しくないか?
943デフォルトの名無しさん:2009/06/12(金) 00:19:21
DispatcherTimer使っとけ
944944:2009/06/12(金) 00:49:57
>>942、943
スレッドが怪しいということなので、とりあえずスレッドを使わずに実験してみたのですが、
それでも画像の更新がうまくいきませんでした。
今使っているコードはこのようになっています。
BitmapImage bmp = new BitmapImage(new Uri(image_paths[0]));
img.Source = bmp;
this.Show();
for (int i = 1; i < img_paths.Length; i++)
{
bmp.UriSource = new Uri(img_paths[i]);
img.Source = bmp;

// Thread.Sleep(5000);
}

this.Show()はスライドショーは作業ウインドとは別ウィンドウでやろうと考えているため、このようになっています。
945デフォルトの名無しさん:2009/06/12(金) 01:22:52
BeginInit&EndInit
質問する前にMSDNに載ってるサンプルコードぐらい読め
946デフォルトの名無しさん:2009/06/12(金) 01:29:07
ボタンの IsEnabled に、あるプロパティが0だったら false
1以上だったら true を設定したいんだけど、IValueConverter
を自分で実装するしかない?

それとももっといい方法ある?
947デフォルトの名無しさん:2009/06/12(金) 01:41:35
ない
948デフォルトの名無しさん:2009/06/12(金) 01:54:13
DataTrigger
949デフォルトの名無しさん:2009/06/12(金) 19:35:55
XAMLの方にClick=""みたいなの書いたら作業ロジックとの切り分けにはならない?
とかがよくわからない
950デフォルトの名無しさん:2009/06/12(金) 20:53:47
XP規定フォントであるMS UI Gothicの表示がヤバ過ぎる
951946:2009/06/12(金) 22:18:02
>>947

やっぱないすかぁ。

>>948

オレへのレスだよね?
DataTrigger って「1以上」って指定はできなくね?
952デフォルトの名無しさん:2009/06/13(土) 00:13:03
>>951
0だったらfalse、1以上ならtrueってことは
結局、0か否かなんじゃねえのか?
953デフォルトの名無しさん:2009/06/13(土) 01:56:05
>>950
だから、XPでメイリオが使えるようになったのだろう。
954デフォルトの名無しさん:2009/06/13(土) 13:04:17
ビットマップフォントの表示にさっさと対応汁>MS
955デフォルトの名無しさん:2009/06/13(土) 20:58:37
beta2までまて
956946:2009/06/14(日) 20:06:54
>>952
理解できた。ありがとん。
957デフォルトの名無しさん:2009/06/16(火) 12:03:20
WPFの日本産フリーソフトって何がある?
参考にしたいんだけど、どいつも海外産で登録制の物しかないし、参考にするものが無い
958デフォルトの名無しさん:2009/06/16(火) 14:01:23
もうすぐ配布がはじまるVisualC#2010なんてどうかね?
959デフォルトの名無しさん:2009/06/16(火) 15:29:01
>>957
MiniTwitterとか、O2Handlerとか
960デフォルトの名無しさん:2009/06/17(水) 14:53:57
他にはないの?
961デフォルトの名無しさん:2009/06/17(水) 23:13:16
WinFormsのコントロールの方が質が上だから普及しないね
962デフォルトの名無しさん:2009/06/17(水) 23:19:50
そうですねー
963デフォルトの名無しさん:2009/06/17(水) 23:53:51
デフォがもうちょっとシンプルだったらなー、とは思う
まあテーマ適用すりゃいいんだけど
964デフォルトの名無しさん:2009/06/18(木) 01:21:39
Blend2SP1とVS2008でいろいろやってるけど
選択時のスタイルとかもうちょっと簡単に設定できていいと思うんだ
965デフォルトの名無しさん:2009/06/18(木) 08:54:14
wpfって正直作ったやつのオナニーのような気がする。
確かにアーキテクチャの着想は悪くないと思うけれど、こんなに使いにくいもん
普及するわけがない。そもそもxamlで何でもかんでも「簡単に」やろうとしすぎて
複雑かつ難解な仕組みになってしまったような気がするよ。



966デフォルトの名無しさん:2009/06/18(木) 09:01:20
そうだろ?
俺が何回もxamlと切り離して普及させるべきだって主張してるのにこのスレのやつらは
メリットがなくなるとかいいだすんだよ
まったく困ったチャンたちだぜ
967デフォルトの名無しさん:2009/06/18(木) 12:24:37

普及って、開発者に対してだろ?

解説ページでも本でも好きに書いて啓蒙したらよいのでは?
968デフォルトの名無しさん:2009/06/18(木) 12:46:53
XAMLは簡単すぎて、何かやろうとすると、記号パズルや「頭の体操」に
なってる気はする。
969デフォルトの名無しさん:2009/06/18(木) 13:39:28
>>966
XAMLと切り離すとかアフォかとwww
って内容のレスを以前もした気がする。

お前は何度同じ話を書けば気がすむんだ?
まったく困ったチャンたちだぜ
970デフォルトの名無しさん:2009/06/18(木) 18:09:54
とりあえず今のWPFは未実装なものが多すぎるからな
将来もWPFという名前のままか分からんが、実装度合いが進めば
ある程度、浸透はするだろ
971デフォルトの名無しさん:2009/06/18(木) 18:17:02
今後Windows Formsは残るがバージョンアップは期待できない。
徐々にWPFに移行するだろう。
972デフォルトの名無しさん:2009/06/18(木) 18:18:37
VisualStudioのShellとして採用されることでマシになると期待してるよ
973デフォルトの名無しさん:2009/06/18(木) 18:55:20
974デフォルトの名無しさん:2009/06/18(木) 19:19:13
どこをどう読んだらそういう解釈になるんだw
もしかして原文読まずに、そのトンデモ翻訳を元にそう書いてるのだったとしたら
ちょっとおバカちゃんすぎるだろ。

ちなみに原文の内容は、WPFのある解説本の初版は
.NET3.0をベースに書かれていてお勧め出来るものではないが
第2版は.NET3.5を対象に多くの点で書き直されており、
お勧めだぜ!とかそんな内容。
975デフォルトの名無しさん:2009/06/18(木) 21:52:35
財団ってw
976デフォルトの名無しさん:2009/06/18(木) 22:08:01
XAMLの発想をWinFormsに移植、そして生まれ変わるMDXによるリッチコンテンツへのサポート
977デフォルトの名無しさん:2009/06/18(木) 22:10:35
>976
そういう感じの作った。
Form上だけど好きなエレメント組み合わせて描画できるようになってよい感じ。
MDXに乗っけられればBitmap転送速くなりそうだ。
978デフォルトの名無しさん:2009/06/18(木) 22:12:43
第一段階:Forms を WPF に置き換え
第二段階:xaml普及

ってやればいいんだよ
まったく困ったチャンたちだぜ
979デフォルトの名無しさん:2009/06/18(木) 22:31:42
>>978
2chで「俺だったらこうするね!」と主張する事に何の意味があるのだろうか。
馬鹿なの?暇なの?困ったチャンなの?
980デフォルトの名無しさん:2009/06/18(木) 23:47:05
そこから話が盛り上がり、はたまた恋が芽生えるかもしれないだろ!
981デフォルトの名無しさん:2009/06/19(金) 00:17:53
それだ!
982デフォルトの名無しさん:2009/06/19(金) 00:18:42
>>977
今から作るならDirect2Dに乗せようぜ
983デフォルトの名無しさん:2009/06/19(金) 02:01:19
意味わからん
DirectX使うならWPFベースでいいだろ
984デフォルトの名無しさん:2009/06/19(金) 08:10:03
>982,983
とりあえずもう9割がた作ったが、Formをただのキャンバスとして扱ってるだけなのでそのうちD2Dとかにのせるかも。

もうすこしWPFに普及の兆しがあればこんなの作る必要もなかったんだが・・・兆しというかパフォーマンスだな。
いろいろ柔軟に複雑なことできそうだけど、一般ユーザーに使わせるシステム作るには対象が限定されすぎ。
Silverlightの方がいろいろと広まりそうだ。そこからWPFも見直されてきそうだけど。それらに全面的に切り替えが許容されるには後1,2年はかかりそうだな・・・(´・ω・`)
985デフォルトの名無しさん:2009/06/19(金) 08:49:11
Direct2Dは技術的にはともかく、Vista以上でしか動かないので話にならん。
まだまだXPは切れない。
986984:2009/06/19(金) 08:56:42
おれはユーザーに2000がたくさんいるとかいわれてForm以外選択肢なかったよ(´;ω;`)ウッ…
987デフォルトの名無しさん:2009/06/19(金) 08:58:43
完全にオナニーだなw
DirectXに載せるならXNAとかMDXとか使ったゲームなどへの組み込みをターゲットにしたら?
まだそれなら需要あるでしょ
988デフォルトの名無しさん:2009/06/19(金) 09:00:40
いまどきMDXとかありえねー
989984:2009/06/19(金) 09:08:39
いやうちで作ってるの業務系だし・・・
趣味でゲーム作るときには使うかもしれんが。

MDXはも一度復活してくれんかなー
Windows7で2D描画速くなるらしいがあれはDirect系とは別物なのかね?
990デフォルトの名無しさん:2009/06/19(金) 09:15:26
いや完全にDirect3Dです
Direct2Dはそれに皮を被せただけ
991デフォルトの名無しさん:2009/06/19(金) 11:28:35
一応Windows API Code PackでDirect3D10からのマネージラッパーあるけどね。
http://code.msdn.microsoft.com/WindowsAPICodePack

まぁMSがこのライブラリを今後どういったかたちで提供してくるのかは知らんが。
992デフォルトの名無しさん:2009/06/19(金) 13:08:49
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
http://pc12.2ch.net/test/read.cgi/tech/1245384489/
993デフォルトの名無しさん:2009/06/19(金) 16:57:14
埋め
994デフォルトの名無しさん:2009/06/19(金) 18:14:17
>>985
そうそう、WPFの描画にDirect2Dを使いたいけどXPで使えないから……、という話もあったみたい。
http://blogs.msdn.com/hiroyuk/archive/2008/10/31/9026003.aspx
995デフォルトの名無しさん:2009/06/19(金) 18:24:37
検討中か。
WPF4.0の次ってことになると、
さすがにそろそろXP自体が切られる可能性もありそうだが。
996デフォルトの名無しさん:2009/06/19(金) 22:30:02
埋め
997デフォルトの名無しさん:2009/06/19(金) 23:21:03
WinFormsはとにかく設計がクソすぎる。
998デフォルトの名無しさん:2009/06/19(金) 23:43:40
古いやつの上に乗ってるんだから仕方ないってのは分かるんだけどねぇ
999デフォルトの名無しさん:2009/06/20(土) 01:06:55
>991
すばらしい。時間で着たら見てみる。
>997
おまえはその前のWndProc,MFCを見たことがあるのかとこ一時間
1000デフォルトの名無しさん:2009/06/20(土) 01:18:06
1000なら、Visual Stido 2010が開発失敗して発売大幅延期、
WPFが使い物にならないと証明される
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。