トップページtech
1001コメント282KB

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2009/12/27(日) 10:58:30
あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについ
て語るスレ。.NET3.5 SP1 もリリースされて盛り上がってまいりますた。

Visual Studio 2008
ttp://www.microsoft.com/japan/msdn/vstudio/
Microsoft .NET Framework 3.5 Service Pack 1
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ja
WPF Toolkit - June 2009 Release
ttp://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117
Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/2010/overview/

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

過去スレ
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/
0903デフォルトの名無しさん2010/05/14(金) 06:25:57
WPFで組んでいるんだけど
App.config をどうにかしてexeに埋め込めませんか?

app.configの埋め込みに関して探していますが、
それらしいページは以下しか見つかりません。
ttp://d.hatena.ne.jp/Kazzz/20050930/p1

私にはこのサイトに書かれている4行(枠で囲まれている部分)
の意味が全く分からないのですが、分かる方おりませんか。

俺はDIコンテナを使っていないので1行目は除くとして、
2〜4行目の「指定された場合」「配置されていた場合」というのは
開発側で制御することなので「指定していた場合」「配置していた場合」
ならまだ分からなくもないのですが・・・(仮にそうだとしても結局分からないのですが)。

枠の下に、「この状態でアセンブリ名+...」とありますが、
この状態っていったいどういう状態のことなのか読み取れません。

俺はapp.config を使っており、ビルドすると アセンブリ名+.exe.config が生成される
状態です。俺の解釈だと、枠内3行目から、俺はapp.config を使って
アセンブリ名+"components.config と言う名前で設定ファイルを埋め込む
のだと思うのですが、ここで書いてある「設定ファイル」が何なのかも不明ですし
よく分かりません。

俺が使っているapp.configを「埋め込みリソース」にして
 アセンブリ名+components.config
 アセンブリ名+.components.config
 アセンブリ名+.exe.components.config
と名前を変えてビルドしてみましたが、configファイル内を読んではくれませんでした。

結局 app.config を埋め込むにはどうすれば良いのでしょうか?お願いします。
0904デフォルトの名無しさん2010/05/14(金) 06:54:55
WPF関係ないだろ。ふらっとか相談室が適当。
0905デフォルトの名無しさん2010/05/14(金) 07:11:21
>>903
.NET用のS2がApp.configを使っている。
S2でApp.configを使わない場合はどうするかという内容だろそれ。
09069032010/05/14(金) 07:12:52
>>904
申し訳ありません。
WPFから入ったもので、この話はVC#全般のことなのですね。

別スレにて質問いたしますので、>>903は無視してください。
スレ汚し失礼しました。
09079032010/05/14(金) 07:17:34
>>905
ありがとうございます。
.NET用のS2・・・が分かりませんので調べてみます。
貼ったURL先は、私のやりたいtこととは違うということですか・・・残念です。

書き込むタイミングが悪くてすみません。
消えます。
0908デフォルトの名無しさん2010/05/14(金) 07:20:41
.netで開発する場合はアセンブリ名って実行ファイル名(拡張子抜き)であり
ネームスペースであったりしない?

まあWPFは関係ないのは事実だな
0909デフォルトの名無しさん2010/05/14(金) 07:34:30
WPFでも作れるようなオサレアプリって実際はAir採用してるのばっかりだな
MSやばいんじゃねーの
0910デフォルトの名無しさん2010/05/14(金) 14:15:11
>>900
DataGrid_PreviewMouseDownで拾えるだろ。
まずMSDNのイベント一覧よく見ろ。

>>902
お前もトンチキな回答して得意気になってんじゃねえよ。
0911デフォルトの名無しさん2010/05/14(金) 16:43:58
>>909
AirだとMacでも動くからな。
0912デフォルトの名無しさん2010/05/14(金) 16:52:29
トンチキなんて5年ぶりくらいで聞いた
0913デフォルトの名無しさん2010/05/14(金) 22:37:17
>>910
ありがとう
すまん
俺が一番トンチキなんだよ

902もthx
0914デフォルトの名無しさん2010/05/14(金) 23:12:57
マルチ失礼します。

Viewort3D 内のモデルをデフォルトの(グーロー?)シェーディングではなく、
三角形の面法線に対するフラットシェーディングで描画したいのですが、どのようにすればできるのかお教えください。
三角形毎に(座標の重複を気にせずに)点を登録してワインディングするのはデータが増えてしまうので避けたいと考えています。
0915デフォルトの名無しさん2010/05/14(金) 23:31:34
WPFで3D?
           . ィ
._ .......、._    _ /:/l!
 :~""''.>゙' "~ ,、、''‐'、|         _   またまた ご冗談を
゙、'、::::::ノ:::::::_,.-=.  _〜:、         /_.}'':,
 ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
 ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:'  ノ゙ノブ
"   .!-'",/  `'-‐'') /\ `/ でノ-〈
 .-''~ >'゙::    ‐'"゙./  ヽ.,'   ~ /
   //:::::       ',    /    ,:'゙
0916デフォルトの名無しさん2010/05/15(土) 01:44:29
マルチ失礼しますって新しいな。
0917デフォルトの名無しさん2010/05/15(土) 01:49:25
それがマジなんですよ。困った事に。
0918デフォルトの名無しさん2010/05/15(土) 06:58:51
directx直接叩きなよ
いい加減リファレンス以外に隠しコマンドなんてないって知れ
0919デフォルトの名無しさん2010/05/15(土) 07:02:10
WPF+XNAに関しての記述がどこかにあったな
0920デフォルトの名無しさん2010/05/15(土) 10:41:28
WPF+XNA は element host 使って XNA の窓を開くとかそんなんだったような気が。
0921デフォルトの名無しさん2010/05/15(土) 10:42:58
ここまでごちゃごちゃしてくると
Appleの強権発動しまくりでAPIをシンプルに保つやり方がうらやましくなってくるな
0922デフォルトの名無しさん2010/05/15(土) 12:04:41
言う程ごちゃごちゃしてるかね?
0923デフォルトの名無しさん2010/05/15(土) 14:07:28
Appleの強権発動は見てて気持ちいい。
真似してやってみるともっと気持ちいい。
0924デフォルトの名無しさん2010/05/15(土) 14:17:20
wpfのレイアウトって地獄だな。
0925デフォルトの名無しさん2010/05/15(土) 17:07:23
gridの正しい使い方を理解すればあとは楽々だ
0926デフォルトの名無しさん2010/05/15(土) 17:09:37
Gridは理解できた
それ以上は無理だった
WPFはGridだけでいいと思った
0927デフォルトの名無しさん2010/05/15(土) 20:25:57
リソースの検索は「論理ツリーの親を再帰的に検索していきルートまでたどっても
見つからないとしてApplicationやテーマも見る」なんだよね?
で、テンプレートは論理ツリーにはぶら下がらない(TemplateParentの説明@MSDNによると)。

ってことはテンプレートの中からは、Applicationやテーマのリソースしか見えないってことでおk?
キーを明示的に指定すると外にあるXAML上の親要素のリソースのスタイル等も見えているような気がするけど。
0928デフォルトの名無しさん2010/05/15(土) 21:42:04
WPFってどんなソフトに向いていると思う?
GUIのソフトは何でもかんでもWPFにするべきだと思う?
0929デフォルトの名無しさん2010/05/15(土) 21:44:50
見た目をこだわる場合だけじゃね?
0930デフォルトの名無しさん2010/05/15(土) 21:49:36
これからはなんでもかんでもWPFで良いんじゃないの?
0931デフォルトの名無しさん2010/05/15(土) 21:58:39
ピュアな.NETだけで作れるものだったらSilverlightのほうが
0932デフォルトの名無しさん2010/05/15(土) 22:19:51
バインディングソース内のオブジェクトのプロパティをバインドしたいんだけどうまくいかない。
ソースとなるクラスに
public ScaleTransform st;があって、
XAML側では
<TextBlock Text="{Binding Path=st.ScaleX}"/>
というふうに指定した。参考↓Path=(オブジェクト名).(プロパティ名)による指定ができるらしい。
http://msdn.microsoft.com/ja-jp/library/system.windows.data.binding.path.aspx
ソース直下のプロパティだと問題なくバインディングできるのに。
XAMLでやるのは無理かな?
0933デフォルトの名無しさん2010/05/15(土) 22:20:49
>>932
うまくいかなかったソースも晒せよ
0934デフォルトの名無しさん2010/05/15(土) 22:27:58
実はstがパブリックフィールドだった
ていうかオブジェクト名とかリンク先には出てこないようだが?
0935デフォルトの名無しさん2010/05/15(土) 22:31:15
>>934
そうですパブリックフィールドです。
リンク先のは
>プロパティのサブプロパティは、C# で使用される構文と同様の構文によって指定できます。
>たとえば、Path=ShoppingCart.Order 句は、オブジェクトまたはプロパティ ShoppingCart
>のサブプロパティ Order へのバインディングを設定します。

が該当するかなと
0936デフォルトの名無しさん2010/05/15(土) 22:32:46
ルート要素でDataContext="{Binding RelativeSource={RelativeSource Self}}"
それとINotifyPropertyChangedを実装するか依存プロパティを使う必要がある
InitializeComponentの前で代入すれば一応動く(更新はされない)
0937デフォルトの名無しさん2010/05/15(土) 22:35:42
だからコードだせよ
0938デフォルトの名無しさん2010/05/15(土) 22:39:17
コードビハインド
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public ScaleTransform s;
public MainWindow() {InitializeComponent();}
public static readonly DependencyProperty PercentProperty =
DependencyProperty.Register(
"Percent",
typeof(double),
typeof(MainWindow),
new FrameworkPropertyMetadata(0.1));
public double Percent
{
get { return (double)GetValue(PercentProperty); }
set { SetValue(PercentProperty, value); }
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
s = new ScaleTransform();
Binding bi = new Binding("ScaleX");
bi.Source = s;
this.SetBinding(PercentProperty, bi);
s.ScaleX = 1.2;
}
private void stack_Loaded(object sender, RoutedEventArgs e)
{stack.DataContext = this;}
}
}
0939デフォルトの名無しさん2010/05/15(土) 22:40:39
うわきた
そのまま貼りw
ここは外部のコード貼りサイト使わないのか
0940デフォルトの名無しさん2010/05/15(土) 22:42:09
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:w="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded">
<Grid>
<w:CustomControl1></w:CustomControl1>
<StackPanel x:Name="stack" Loaded="stack_Loaded">
<TextBlock Text="{Binding Path=Percent}"/>
<TextBlock Text="{Binding Path=s.ScaleX}"/>
  </StackPanel>
</Grid>
</Window>
イランとこ削ったけどこんな感じ。Percentプロパティはちゃんとバインドできてる。
>>936のRelativeSource Selfでの指定ではうまくいかんかった。
0941デフォルトの名無しさん2010/05/15(土) 22:42:47
プロパティにしろ
0942デフォルトの名無しさん2010/05/15(土) 22:45:04
> public ScaleTransform s;
(゚д゚)
0943デフォルトの名無しさん2010/05/15(土) 22:48:00
それと、プロパティにしてもDataContextを設定するタイミングによっては反映されない
RelativeSource Selfでうまくいかないのはそれが理由
更新を確実に反映させるには>INotifyPropertyChangedを実装するか依存プロパティを使う必要がある
0944デフォルトの名無しさん2010/05/15(土) 22:50:04
これは酷すぎ。
デバッグよりも、書籍で基礎的なBindの説明を全部読み直すことをお勧めする。

あと出力ウィンドウを見ろ。バインド失敗の実行時エラーが表示される。
0945デフォルトの名無しさん2010/05/15(土) 22:51:49
書籍ねぇ
0946デフォルトの名無しさん2010/05/15(土) 22:54:28
※コードの量が多い場合は下記サイトを使うなどしたほうがいいかも※
http://ideone.com/
http://codepad.org/

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
0947デフォルトの名無しさん2010/05/15(土) 22:58:25
なるほど。パブリックフィールドをパブリックプロパティにしたらうまくいった。
出力ウィンドウ見てなかった…。

>>946
次からそこ使います
0948デフォルトの名無しさん2010/05/15(土) 23:47:33
RelativeSourceを指定してもうまくいかなかったのはStackPanelで宣言してたからだった…。まぬけ
Windowに書かないとだめだ。
あとソース直下のプロパティが依存プロパティでないと変更が反映されない。
今回の例では、フィールドからプロパティに書き直した”s”が依存プロパティでないと、
そのプロパティであるScaleXが依存プロパティでもきちんと反映されない。
>>943の言ってることがようやくわかった。今日はぐっすり寝られる。おやすみなさい
0949デフォルトの名無しさん2010/05/16(日) 02:50:14
まあしっかり寝ろよ
0950デフォルトの名無しさん2010/05/17(月) 01:34:04
さて起きたらWPFで3D画像処理の仕事だ。動く訳ねえからな、こんなもん。
やる気がしねえや。
0951飛び出せ!名無しくん2010/05/18(火) 07:06:30
WPFの本探しているがいいのがない
オススメある?
0952デフォルトの名無しさん2010/05/18(火) 08:01:30
エッセンシャルズ一択だろ
0953デフォルトの名無しさん2010/05/18(火) 15:57:19
2010が出てからWPFはじめようとする人が増えたみたいだな

一儲けさせてもらいますか
0954デフォルトの名無しさん2010/05/18(火) 20:51:48
>>953
ちゃんと情報を咀嚼したWPFの本を書いてくれると言うのか。
頼むわ、良かったら買うから。
0955デフォルトの名無しさん2010/05/18(火) 22:39:29
煽りでもなんでもなく良書書いてくれたら5000円越えるぐらいでも買うと思う。
0956デフォルトの名無しさん2010/05/18(火) 23:37:22
期待してるわ
0957デフォルトの名無しさん2010/05/18(火) 23:59:56
<TextBlock/>と<TextBlock Style="{StaticResource {x:Type TextBlock}}"/>は違うのに
<Style TargetType="..."/>と<Style TargetType="..." x:Key="{x:Type TextBlock}"/>は同じなのか…

リソースの検索ルーチンワケワカメ
0958デフォルトの名無しさん2010/05/19(水) 00:25:23
>>954
咀嚼っていうか
ちょっとゲーしちゃったやつだけど
よかったらお召し上がりください
0959デフォルトの名無しさん2010/05/19(水) 22:52:34
エッセンシャルって基礎知識あること前提に書かれてるからはじめに読む本じゃないだろ。
理解深めるには良いかもしれんが。

和書なら少々古いが、川西氏翻訳のWindows Presentation Foundationプログラミングがオススメだと思うが。
洋書なら Pro WPF 一択かね?タウンページ並の分厚さで読むのに不便だが。
0960デフォルトの名無しさん2010/05/19(水) 23:29:07
>>959
川西氏翻訳〜は
その後に決まりが変更されたことばかりで
間違った知識が入ってしまうと思うけどなぁ。
サンプルソースを入れてもビルド通らないこと多いし。
0961デフォルトの名無しさん2010/05/19(水) 23:32:25
大概の言語に入門サイト見てーなもんはあるもんだが
WPFのマイナーさが浮き彫り
0962デフォルトの名無しさん2010/05/19(水) 23:46:02
WPFデーターバインディングは凄いけど、
ほとんどのプロパティにアレが仕込まれてると思うと、
ちょっとゾッとするな。

データークラス作るの面倒くさいし。

CLRのオブジェクトレベルで実装してくれればいいのに。
0963デフォルトの名無しさん2010/05/20(木) 00:06:41
静的型では仕方ないでしょ
添付プロパティとか言語に組み込んだら型の意味がなくなる
0964デフォルトの名無しさん2010/05/20(木) 00:08:52
>プロパティにアレが仕込まれてると思うと、
あれとは?
0965デフォルトの名無しさん2010/05/20(木) 00:18:06
set
{
if (value != this.hogeValue)
{
this.hogeValue = value;
NotifyPropertyChanged("hoge");
}
}
0966デフォルトの名無しさん2010/05/20(木) 00:19:27
メジャーなアプリがWPFで書かれたとかあったっけ?
IDEとかじゃなく一般人が使うようなので
0967デフォルトの名無しさん2010/05/20(木) 00:20:44
NotifyPropertyChanged
これは仕方ないでしょ・・・
0968デフォルトの名無しさん2010/05/20(木) 00:31:04
文字列で通知するのがやな感じ
0969デフォルトの名無しさん2010/05/20(木) 00:32:37
>>968
そんなの言ってたらSQLとかhtmlとかどうするのw
0970デフォルトの名無しさん2010/05/20(木) 00:46:06
ほんとにhtml以下の速度だったりするから困る
0971デフォルトの名無しさん2010/05/20(木) 00:48:42
ラムダ式と式木使ってプロパティ名渡すのがいい感じだった。
0972デフォルトの名無しさん2010/05/20(木) 01:58:56
>>970
それはない
つマシン組み直し
0973デフォルトの名無しさん2010/05/20(木) 01:59:33
WCFとかすごいぞw
0974デフォルトの名無しさん2010/05/20(木) 02:36:32
>>966
無い。
そういうのはAdobe AIRが使われている。
0975デフォルトの名無しさん2010/05/20(木) 03:33:27
>>969
おま、何のためにLINQ出て来たと思ってんだよwwwww
0976デフォルトの名無しさん2010/05/20(木) 06:58:01
とっとと言語内で別の言語使えるようにしてくれんかね…
unsafeみたいにブロックで区切ってそこからはSQLネイティブで書いてインピーダンスミスマッチはは規定もしくは明示的に指定したものを使うとかで。
LINQは便利だけどなんか無理くり自分の土俵に持って来てる感が美しくない。
0977デフォルトの名無しさん2010/05/20(木) 07:50:13
お前らスレ違い
0978デフォルトの名無しさん2010/05/20(木) 18:29:44
評価を始めて、最初は良さそうに思うけど、
すぐに、マイクロソフトらしい実用に耐えない設計の甘さが露呈してきて幻滅する。
0979デフォルトの名無しさん2010/05/20(木) 18:41:45
>>978
もっと具体的に
0980デフォルトの名無しさん2010/05/20(木) 22:37:58
繰り返しをForeverに設定したアニメーションの移動速度を
動的に変更することって出来ますか?
例えばスライドバーで1〜10の値を得られるとし、
スライドバーの値を大きくすると、アニメーションの速度も
一緒に速くなるようなことがしたいのです。

どうやればできそうでしょうか?
0981デフォルトの名無しさん2010/05/20(木) 22:43:27
IValueConverterでdoubleだかintだかからDuration型への変換を定義して
アニメーションのDurationプロパティのバインディングを使えばいいんじゃない
0982デフォルトの名無しさん2010/05/21(金) 05:21:48
WPFってなんで死んでしまったの?
0983デフォルトの名無しさん2010/05/21(金) 05:24:23
死ぬも何も芽が出なかった
0984デフォルトの名無しさん2010/05/21(金) 07:08:08
まだWPFを使いこなせてないのか
0985デフォルトの名無しさん2010/05/21(金) 10:17:54
MonoのようにLinux版でないかな
0986デフォルトの名無しさん2010/05/21(金) 10:53:50
ギンピカ
0987デフォルトの名無しさん2010/05/21(金) 11:27:24
米国のサイトが翻訳されないから
0988デフォルトの名無しさん2010/05/21(金) 11:29:44
若干翻訳されてるが文章がくどすぎて読む気にならない
下手糞
0989デフォルトの名無しさん2010/05/21(金) 11:46:25
ハリボテすぎる。
0990デフォルトの名無しさん2010/05/21(金) 11:56:11
>>988
お前が書けYO
0991デフォルトの名無しさん2010/05/21(金) 13:31:07
できぬっ!!
0992デフォルトの名無しさん2010/05/21(金) 13:35:37
酷すぎる…っ!!!
0993デフォルトの名無しさん2010/05/21(金) 13:43:05
翻訳ェ・・・
0994デフォルトの名無しさん2010/05/21(金) 15:09:28
 V V
(´・ω・`) うさちゃんピース
0995デフォルトの名無しさん2010/05/21(金) 15:17:31
次ぎたててくる
0996デフォルトの名無しさん2010/05/21(金) 15:27:55
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://pc12.2ch.net/test/read.cgi/tech/1274423236/
0997デフォルトの名無しさん2010/05/21(金) 16:16:13
おつおつ
0998デフォルトの名無しさん2010/05/21(金) 16:21:15
発掘!五枚雑巾!!
0999デフォルトの名無しさん2010/05/21(金) 16:22:27
美しさは皮一枚

   醜さは骨の髄まで
1000デフォルトの名無しさん2010/05/21(金) 16:32:29
1000ならWPF終了
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。