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

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part16

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/05/30(木) 20:12:06.20
ユーザーインターフェースシステム、Windows Presentation Frameworkについて微に入り語るスレ。

Visual Studio 2012 & 2010
http://www.microsoft.com/visualstudio/jpn/downloads
Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&;displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&;displaylang=ja
Microsoft .NET Framework 4.5
http://msdn.microsoft.com/ja-jp/library/vstudio/5a4x27ek.aspx

前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part15
http://toro.2ch.net/test/read.cgi/tech/1359863558/

関連スレ
Microsoft Silverlight その9
http://toro.2ch.net/test/read.cgi/tech/1321150267/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0348デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
おかえりください
0349デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
データバインドだけで行けそうだけど
0350デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
役に立たない2chのクズ共がw
0351デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
>>347
そういうのはむしろVにコード書きまくってカスタムコントロールに閉じ込めろ
無理にMVVMにするよりその方が全体としては綺麗だし再利用性も高くなる
0352デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
>>351
なるほど、やっぱりカスタムコントロールでなんとかするしか
道はないのか…
ありがとう、参考になった
0353デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
これは読んでおくべきっていうWPFの洋書って何かありますか
0354デフォルトの名無しさん2013/07/25(木) NY:AN:NY.AN
>>353
ペントハウスとプレイボーイ
0355デフォルトの名無しさん2013/07/25(木) NY:AN:NY.AN
ハスラーのがもっといいよ
0356デフォルトの名無しさん2013/07/25(木) NY:AN:NY.AN
itemscontrolとデータバインドを使いなはれ
0357デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
なんでC#ってpublic変数推奨みたいなことになってるの
10年前猫も杓子もオブジェクト指向って言ってた頃は、
変数はprivateにして関数経由で読み書きすべきと主張してたジャン
この態度の変わりようはなんなんn
0358デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
>>357
C#はプロバティ-至上主義だろ
お前は何処の星出身だよ

仮にお前がpublic変数を現場で使えと言われているなら、言っている奴が特殊だ
0359デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
誰も推奨なんかしてないし>>357が何か誤解してるとしか思えんな
0360デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
外部に公開するクラスじゃないならなんでもかんでも
プロパティにする必要も無い気もする。
0361デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
publicな自動実装プロパティってpublic変数と実質同じじゃないの?
0362デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
利用する側のコードを変更することなく、後で自動実装でないプロパティに変更できる点が違う
なんでもかんでも公開するべきではないという意味では、フィールドより少しだけマシとはいえやはり必要最小限にするべき
0363デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
あと、private setが便利だよな
0364デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
setter, getterなんか面倒くさいだけやったんや
0365デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
一応WPFの話題に戻すと
XAMLからデータバインドに使えるのは
publicなプロパティだけだから注意な
0366デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
どうせ暗黙のgetter,setter生成に依存しちゃうなら
いっそpublic識別子の代わりにproperty識別子みたいなの
言語仕様に入れちゃえば良かったのにね
0367デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
D最強
0368デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
Delphi最強
0369デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
プロバティーは外部から変更されたタイミングが簡単にわかるし
外部から読み取り専用にして内部データを保護できるとか、便利な仕組みだよな
自動実装の不満点は初期化の仕組みがないことだわ
0370デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
そういう機能主義的な観点で言えば、Java信者の人がよく言うように「そんなのgetter/setterでも可能」
って話になるからなあ。

そうじゃなくて、OOの属性という概念をプログラミング言語に素直に写像したものが
プロパティだと考える方が納得的だと思う。
0371デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
>そんなのgetter/setterでも可能

そんなの言い出したらCでも可能
0372デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
C言語で十分やったんや
それ以降は言語製作者のオナニーやったんや
0373デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
C+1 ぐらいでいいから C を完全に滅ぼせるのがほしかったな
0374デフォルトの名無しさん2013/07/29(月) NY:AN:NY.AN
ところが.NET4.0ではバグのせいでXAMLから
privateなプロパティをバインドできてしまうという
0375デフォルトの名無しさん2013/07/29(月) NY:AN:NY.AN
放置すればするほど阿鼻叫喚が待ってるわけか…
修正するなら下手な救済を与えずバッサリ行って欲しいね
0376デフォルトの名無しさん2013/07/29(月) NY:AN:NY.AN
全部public変数で問題無かったんや
0377デフォルトの名無しさん2013/07/29(月) NY:AN:NY.AN
Unity3Dがpublicフィールド推奨してるせいで
ますます進むpublicフィールドへの回帰
0378デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
金額を表示・入力する TextBox が結構あるので、
右寄せ表示と通気用の書式を Style にまとめようと思った。

けど、StringFormat って Style で指定できなくね?
Label の ContentStringFormat なら Style で指定できるのに。

なんだこれ。
0379デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
ネタにマジレスは禁止です><
0380デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
WPF leak でぐぐると山ほどでてくるけど、直す気はあるのかな?
グラフィック系のハンドルだのファイルハンドルだのオブジェクトだのメモリだの
だだ漏れじゃないか

あとMediaElementが不定期にファイル握ったままになるのを直してほしいわぁ
0381デフォルトの名無しさん2013/08/03(土) NY:AN:NY.AN
実際それでWPFで作られたアプリが不安定になるわけじゃないし、
メモリリークしてたっていいんじゃないの
0382デフォルトの名無しさん2013/08/03(土) NY:AN:NY.AN
アプリ起動時にマウスカーソルの位置をアプリの中央に設定したいんですがどうしたらいいですか
0383デフォルトの名無しさん2013/08/03(土) NY:AN:NY.AN
win32api
0384デフォルトの名無しさん2013/08/03(土) NY:AN:NY.AN
チューチューマウス
0385デフォルトの名無しさん2013/08/03(土) NY:AN:NY.AN
WPFってマウスの位置設定もできないのか…
0386デフォルトの名無しさん2013/08/03(土) NY:AN:NY.AN
別にWPFである必要性がないような...
System.Windows.Forms.Cursor.Positionって普通に使えるよね。
名前空間の仕分けが変なのは今更言っても
0387デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
てかWPFに限らず
勝手にマウスカーソル移動させられちまうアプリって
俺がユーザーならそれだけで不満爆発
0388デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
System.Windows.Forms.Cursor.Position
それ読み取りしか使えなかったっす
0389デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
PointToScreenで相対座標で設定しようとするとできなかったっす
0390デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
低能だわマルチポストだわ
0391デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
しかもマルチだし
0392デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
役に立たない2chのクズ共がw
0393デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>388は完全に間違いだし
>>389はたぶん使い方間違ってるんだろうし
0394デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
おそらくSystem.Drawing.PointとSystem.Window.Pointの違いに気づいてないとか
0395デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
visual studio 2012みたいな外観のアプリケーションってタイトルバー含めて自分で描画してるんですかね?
0396デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
vs2010expressでマウス操作でGUI部品を貼り付けて実行したら、
GUI部品のレイアウトが微妙にずれてるんですが、どうなってますか
vs2012だったらこういうことはないですか
0397デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
馬鹿はどんな道具を使っても無理
0398デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
WPFは"論理的に"正しくレイアウトするんだ
クソ細かいことを気にしていちいち微調整したがるジャップには合わない
0399デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
そもそもWPFはポトペタで作るもんじゃない
それじゃごく初歩的な単純な画面くらいしか作れないし
WPFで作る意味もない
0400デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
しかしWPF製のアプリケーションって全然増えないねw
ストアアプリは別として
0401デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
散々だけど当たってなくもないw
http://www.infoq.com/jp/articles/Win8-LOB-Options
0402デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
全く持ってその通りでワロタ…
0403デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
metroはデータベースが触れるのだったら使いたいけど
今のままじゃ無理だな

妙な設計のおかげでデータベースがレスポンス寄越す前に
metroが休止したりとかさんざんな状態になる
0404デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
ストアアプリなんてゲームを除けばWebサービスのクライアントを作るための
ものなんだからそんなもん要らん
ちょっとリッチなHTML+JSにすぎない
0405デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
画像ファイルをスムーズに拡大/縮小したく下のようなコードを書きました。
スライドバーを動かすとそれにあわせて拡大縮小します。
ただ一定範囲ごとにひっかかりがあります。たぶん拡大縮小の画像を
生成しているんじゃないかと思うのですが何かスムーズになる方法は
ないものでしょうか?環境はVS2008です。

Class Window1

  Dim img As New Image

  Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded

    Dim dec As New TiffBitmapDecoder(New Uri("c:\a4.tif"), BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default)
    For Each frame As BitmapFrame In dec.Frames
      img.Source = frame
      Canvas1.Children.Add(img)
      Exit For
    Next

    Slider1.Maximum = 1000
    Slider1.Value = 500

  End Sub

  Private Sub Slider1_ValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double)) Handles Slider1.ValueChanged
    img.RenderTransform = New ScaleTransform(Slider1.Value / 1000, Slider1.Value / 1000)
  End Sub

End Class
0406デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>405
見てないけど引っかかるのはスクロールバーと関係ない?
0407デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>406
スクロールバーは表示されていないので関係なさそうです。
0408デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
てかデータバインド使えよ それだけで済む
0409デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
BitmapCacheOption.Default
のおかげか一度拡大縮小するとその大きさの部分はスムーズに
拡大縮小されます。
0410デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
DrawingVisualでRenderするようにしたらスムーズになりました。
お騒がせしました。
0411デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
if (control.Visibility == Visibility.Visible)
{
control.Visibility = Visibility.Collapsed;
}
else
{
control.Visibility = Visibility.Visible;
}

こうやっていちいち書くのは面倒なので一行で書けるようにしたいのですがどうすればいいですか?
controlは常に同じ型とは限りません。
0412デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
? と : 使えば一行。
0413デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
>>412 が書いてるように三項演算子書くと一行だけど
ロジックミスを起こしやすいところなので
実際はToggleVisibility()あたりのメソッドを自作しておいた方がいいかもね
初心者はメソッドをうまく使えないので難しいかもなあ


> controlは常に同じ型とは限りません。
ここも不安要素w
0414デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
Shapeクラスを継承して作った自作クラスをリストに入れておいて、
リストから順番に取り出してポリモーフィズムみたいにして順に関数を実行したい

for(int i=0; i<リストの要素数; i++)
{
  Shape myShape = (リスト)[i];
  myShape.doSomething();
}

この場合に doSomething関数をどうやって作ったらいいんでしょうか
Shapeに関数追加とかできるんでしょうか
0415デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
え?
継承ってどういうことか分かってます?
0416デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
どうやってって…継承して普通にメソッド書いたらいい。ググれ
wpf関係ないし言語仕様の話だ
0417デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
なんか夏休みですのー
この2,3日の書き込みのレベルがw
0418デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
継承した関数に書いてもShape型では実行できないじゃないので
0419デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
>>418
継承かと思ったら致命傷だったw
てか、アンタの考えているものを実現できるのは拡張メソッドというやつ
継承は継承したクラスが元のクラスの機能を使えるってものだから、逆は無理だよ
0420デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
Shapeを継承したMyShapeにdoSomethingを仮想関数で作っておいて、
MyShapeを継承した自作クラスでdoSomethingを実装して、
MyShape型で関数呼び出せばいけたわ
役に立たない2chのクズ共がw
0421デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
幼稚くさ
0422デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
var myShape = リスト[i] as MyShape;
if( myShape != null )
{
 myShape.doSomething();
}

でいいやん
0423デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
MyShapeを使わずにShapeにdoSomethingを追加して同じことをすることはできんのか
最新のテクノロジーのプログラミング言語なんだからそのくらいできんのか
0424デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
まぁ、君には無理だよ
いい加減消えなさい うざいから
一人で頑張ってこのスレのレベル落とさなくてもいい
0425デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
>>423
出来るよ
0426デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
分からないならレスしないで下さい。うざいだけです
0427デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
デリゲートでも添付しとけ
0428デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
猛暑だなーw
もう少しまともな質問できるレベルまで勉強してから手出せばいいのに
0429デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
>>423
dynamic daikuma = リスト[i];
daikuma.doSomething();
0430デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
なんで拡張メソッド使わないんだよ…
0431デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
拡張メソッドでオーバーライドンできますか
0432デフォルトの名無しさん2013/08/09(金) NY:AN:NY.AN
Ride on Time
0433デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
>>429
田舎者乙
0434デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
Ownerウィンドウが移動したら子ウィンドウも連動して動くようにするにはどうしたらいいですか?
0435デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
なんでWPFってGUI部品の背景白なん
0436デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
あなたのお好きな色に染まります
0437デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
Xamlでの Width="*" はC#だとどう書けばいいのですか?
0438デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>437
http://www.atmarkit.co.jp/ait/articles/0904/03/news104_3.html

WPF始めたばかりだけど、この記事はなかなか良記事だと思った。
最後の方はちょっと荒れてるけど
0439デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
XAMLで書けよ
0440デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>437
GridLength 使え
0441デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
ビジネス的にはXP対応のために4.0までで作るのがいいのかな?
クライアントで4.5を仕事に使ってる人はいる?
0442デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
人生いろいろビジネスもいろいろだと思いますが...

Windows Formでかつパッケージソフト寄りのアプリなら、XPのシェアを考慮すれば
現状では4.0が最適解かなと思うけど、WPFだとそもそもXP対応をうたって
大丈夫なのかなという気もする。
0443デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
XPなんて1年以内に絶滅するの確定なのに、XP対応で新システム作るのはアホでは
0444デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
それどんなパソヲタ脳だよ
0445デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
公式サポート来年の4月で切られるのなんて周知されてるだろ
まだ7への更新を検討してない所なんて本当に少数の筈だが
04463262013/08/15(木) NY:AN:NY.AN
サポートが終わるだけで、XP自体が使えなくなるわけではない。
業務系などは100%誤動作しない事がわかっていなければ、簡単にOSを変更できない。
その為のVMとかもあるので、何かの事情があるのでなければXPを視野に入れるのも間違いではないぞ。

個人的には無駄だと思うけどなw
0447デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>442
4.0と4.5は互換性のない変更が含まれてるけど共存しないから
4.0はなしだよ。選ぶなら3.5か4.5のどっちか。
■ このスレッドは過去ログ倉庫に格納されています