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

WPF(XAML, XBAP, .NET4.5)GUIプログラミング Part17

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/11/11(月) 19:31:37.96
ユーザーインターフェースシステム、Windows Presentation Frameworkについて微に入り語るスレ。

Visual Studio 2013 & 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プログラミング Part16
http://toro.2ch.net/test/read.cgi/tech/1369912326/

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

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0002デフォルトの名無しさん2013/11/11(月) 19:36:31.77
https://dl.dropboxusercontent.com/u/150482979/2.swf
0003デフォルトの名無しさん2013/11/11(月) 19:50:14.83
>>2はグロ注意な
0004デフォルトの名無しさん2013/11/11(月) 20:11:27.08

君のその報告こそどうでもいい事なんだが
0005デフォルトの名無しさん2013/11/11(月) 20:48:58.04
why?
0006デフォルトの名無しさん2013/11/11(月) 21:46:19.11
立てんなっていってんだろうがカス
0007デフォルトの名無しさん2013/11/11(月) 21:59:58.99
すっかりアンチが居着く様になったなあ
0008デフォルトの名無しさん2013/11/12(火) 01:34:36.30
DataTriggerって定数と一致する時のみなの?
もっと自由な比較がしたいんだけど
0009デフォルトの名無しさん2013/11/12(火) 01:44:11.31
IValueConverterとか使えば自由に比較できるよ
0010デフォルトの名無しさん2013/11/12(火) 02:14:44.95
>>7
程よいアンチはメジャー技術の証し
0011デフォルトの名無しさん2013/11/12(火) 09:59:23.64
超重いデータバインディング処理のGUI反映完了を知る手段ってありますか?
ListBoxカスタマイズしてサムネイル一覧表示してるんだけど
ObservableCollection<BitmapImage>に入れた後
処理が帰ってくるまでフリーズするんだよねぇ
0012デフォルトの名無しさん2013/11/12(火) 11:12:48.30
完了タイミングを知るより処理を軽くする方が正しい気がする。サムネイルなのに画像でかすぎとか更新イベントとびまくりとか何か要因あるんじゃない?
0013デフォルトの名無しさん2013/11/12(火) 11:50:33.28
>>10
初期は誰も居なかったのに、ずいぶんと人が増えたものだ
0014デフォルトの名無しさん2013/11/12(火) 11:55:59.89
>>12
個数が何百もあって、最初はconverter経由でサムネイル化もバインディングでしてたけど、あまりに重いからサムネイル化はスレッドでやってあとからBitmapImageだけバインディングしたけど、結局ListBoxへのItem追加(バインディング)が遅かった
ListBoxにサムネイル入れるのが間違ってるのかな、、、
0015デフォルトの名無しさん2013/11/12(火) 23:22:55.51
>>14
個数を減らした場合の結果はどう?意図せず UI の仮想化を無効にしてない?
http://msdn.microsoft.com/ja-jp/library/cc716879.aspx
0016デフォルトの名無しさん2013/11/12(火) 23:30:48.91
>>11
単に仮想化がかかってないだけの気がする。
ListBoxはデフォルトのままだと仮想化されてなかったような。
0017デフォルトの名無しさん2013/11/12(火) 23:55:40.82
ItemsPanelに何使ってるの?
StackPanelじゃないとVirtualize効かないぞ
WrapPanelとか使ってるならItemSize指定しないと死ねる
0018デフォルトの名無しさん2013/11/12(火) 23:57:12.91
正確にはVirtualizingStackPanel使わないと、だな
0019デフォルトの名無しさん2013/11/13(水) 00:06:06.85
何にせよちょっと情報が足らんな
できればListBoxの部分のXAMLだけ貼ってくれ
0020デフォルトの名無しさん2013/11/13(水) 09:47:03.13
ありがとう!勉強なったよー

<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel ItemWidth="120"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>

ItemsPanelはTemplateでWrapしてました
ノーマルで使う場合は仮想化が標準で利いていて問題がなかったもよう
見た目をWrapPanel風にしたいんだけどVirtualizingWrapPanelってないのか...
0021デフォルトの名無しさん2013/11/13(水) 09:55:56.40
自作か外人の作ったの使うか
0022デフォルトの名無しさん2013/11/13(水) 10:01:26.48
codeproject見つけました、めんどくさそ笑
素直にVirtualizingStackPanel使うしかなさそうですね
0023デフォルトの名無しさん2013/11/13(水) 16:05:32.68
>>16
いや、ListBoxは標準で仮想化ですよ。逆にそれが原因でトラブったから間違いありません
って事で、バインディングされているプロバティーのgetで読み込まれたタイミングでサムネ作ればなんとかなるかも
0024デフォルトの名無しさん2013/11/13(水) 16:51:59.67
4.0以降のDataGridで20行とか行数を固定にしてコントロールの縦幅に合わせて行の高さや
文字の大きさを調整するとか簡単に出来る方法無いかな?
0025デフォルトの名無しさん2013/11/13(水) 19:01:01.76
>>23
> って事で、バインディングされているプロバティーのgetで読み込まれたタイミングでサムネ作ればなんとかなるかも
仮想化が無効になってるんだから、意味ないと思うけどな。

素直にVirtualizingWrapPanel実装したほうがいいんじゃない?

最初は面倒だけど、これが実装できるようになると、
実現できることの幅がぐっと広まるよ。
0026デフォルトの名無しさん2013/11/13(水) 19:04:36.54
こんなもん実装しておけよって思ってしまう
不思議だなあ
0027デフォルトの名無しさん2013/11/13(水) 19:09:13.84
そのうち標準で実装されるかもね。

VirtualizingStackPanelですら
4.5でやっとまともになったって段階なんで
WPFの歩みは皆が思っているより相当遅い。

俺たちのWPFはこれからだ!
0028デフォルトの名無しさん2013/11/13(水) 19:22:44.36
6週ごとのリリースサイクルにしろよ
阿鼻叫喚だぜ
0029デフォルトの名無しさん2013/11/13(水) 19:30:23.60
> 俺たちのWPFはこれからだ!
打ち切り?w
0030デフォルトの名無しさん2013/11/13(水) 20:41:03.10
リスト系とかDataGridとかカラムの高さを変更しても中の文字とかサイズに追従してくれないけど
そういう場合ってどうやったらフィットさせられるのかな。ViewBoxイチイチ仕込むしかない?
0031デフォルトの名無しさん2013/11/13(水) 22:07:54.87
>>25
いや、ListBoxは標準でVirtualizingStackPanelが包括してあって、VirtualizingStackPanel.IsVirtualizing="false"とすると
はじめて仮想化が切られるようだ

BringIntoViewがまともに動かず苦労したが(仮想化が有効だからItemが生成されていないため)仮想化を切ったら普通に動いた
0032デフォルトの名無しさん2013/11/14(木) 21:06:06.79
DataGridにバインドしたDataTableのデータの内容によって、セルの背景色を変えたいんですが、どうすればできるのでしょうか?
0033デフォルトの名無しさん2013/11/14(木) 21:24:03.95
CellStyle作ってDataTrigger使えば行けるんじゃねえの
0034デフォルトの名無しさん2013/11/14(木) 22:31:03.00
Livetの人のページが見られなくなってるけど何なのこれ
0035デフォルトの名無しさん2013/11/15(金) 00:20:12.28
>>34
業務連絡はTwitterでやってください
0036デフォルトの名無しさん2013/11/15(金) 01:02:39.74
どんな業務よ
0037デフォルトの名無しさん2013/11/15(金) 09:15:09.39
フレームワークを使ったこと無いんだけどどれがオススメ?
0038デフォルトの名無しさん2013/11/15(金) 10:13:18.84
自作。割とマジで
0039デフォルトの名無しさん2013/11/15(金) 10:45:40.49
自分の好みに合わせて最終的に自作になるという話は分かるけどさ、それは他のを
触ってみて初めて到達できる境地だと思うんだよね。
まずは基本のPRISM使ってイラっとするところからじゃないかなw
俺も最初悩んで日本人作ってるしとLivetが良さそうと思ったんだけど資料が
なすぎで選定落ちしたw あれはMVVMやWPFわからん人には多分無理だと思う。
0040デフォルトの名無しさん2013/11/15(金) 13:19:01.57
ReactiveUI一択
0041デフォルトの名無しさん2013/11/15(金) 14:07:57.62
え、えむえふしー…
0042デフォルトの名無しさん2013/11/15(金) 16:53:56.83
ダメだ、UserControlが複雑に重なりあうとBindinggroupがまったく機能しなくなる
しゃーないから自分でClone実装して似たような事してるわ
0043デフォルトの名無しさん2013/11/15(金) 19:43:36.25
Xamlの読解性って最悪じゃないですかね?
HTML%2bCSSの方がよっぽどマシなんですが
0044デフォルトの名無しさん2013/11/15(金) 19:46:27.79
>>43
その%2bってなに?
機種依存文字?
0045デフォルトの名無しさん2013/11/15(金) 19:57:02.04
じゃあRIAのHTMLだけ見てレイアウトを想像できるのかと
0046デフォルトの名無しさん2013/11/16(土) 04:07:03.87
LooseXAMLが、HTMLに取って代わる時代とか来て欲しかったなあ
もう無理だろうけれども
0047デフォルトの名無しさん2013/11/16(土) 10:34:05.11
なあにXAMLは既にHTMLの代わりになってるじゃん
IEだけだけど
0048デフォルトの名無しさん2013/11/16(土) 10:36:54.57
所詮専用設計されたものじゃないので無理があるほうが逆に自然
0049デフォルトの名無しさん2013/11/16(土) 15:06:36.39
Bindingの方法が何通りもある理由ってなんなんでしょうか
下々がWPFを理解し辛い理由がこのBindingなんすよね
ひとつこれが正しいですってMSDNで解説してくれてれば迷わないんですが
ケースごとの使い分けとか解説してないですよね
だからググっても人によって行く通りもバラバラの解説で更に迷うみたいな
0050デフォルトの名無しさん2013/11/16(土) 15:16:08.24
何通りもあるってどういうこと?
拡張マークアップのことを何通りもあると表現しているのか?

できれば何通りかサンプルURLでも貼ってくれるといいな
0051デフォルトの名無しさん2013/11/16(土) 15:37:15.99
まあテンプレートバインディングなんかはそうだし、プロパティパスの書き方が
プロパティの型名を入れる書き方とそうでない書き方があったりどか、そういうのはあるね。

あとBindingに限らないけど、WPFってこういうの結構多い気が
http://togetter.com/li/63245

やっぱりWPFもXAMLも筋が悪いよな全体的に
0052デフォルトの名無しさん2013/11/16(土) 15:46:35.47
TypedTableBase<T>はIEnumerableが付いてるからリンク先みたいな状況は滅多に発生しない
0053デフォルトの名無しさん2013/11/16(土) 15:51:55.36
WPFややこしいとか思ってたがインターフェースビルダーの方が意味不だったわ(´・ω・`)
0054デフォルトの名無しさん2013/11/16(土) 15:57:44.81
しかもXcode4.7と5であまり互換性がないという
0055デフォルトの名無しさん2013/11/16(土) 16:00:48.95
Macの話は止めろ
どうせ使わん
0056デフォルトの名無しさん2013/11/16(土) 17:47:27.32
WPFは機能面や構造面を見ると十分採用圏内なんだけど
メンバーへのトランスファーを意識するとどうしたもんかと思ってしまう
0057デフォルトの名無しさん2013/11/16(土) 18:11:15.05
>>51
しかも、MS自身がこういうドキュメント化されてしない仕様を把握しきれてないね。

そのせいで、コントロールの組み合わせ次第でレイアウトが崩れたり、
VSで問題ないコードがBlendでエラーを引き起こしたりとか、
ボロボロだよ。
0058デフォルトの名無しさん2013/11/16(土) 19:52:14.97
問題点を整理した上でRazorを拡張して
Webアプリとネイティブが両方同じ方法で作れるようになったら
大逆転あるで
0059デフォルトの名無しさん2013/11/16(土) 19:54:47.90
そもそもなぜxamlとaspxを分けたんだろ・・・
0060デフォルトの名無しさん2013/11/16(土) 20:14:49.39
Silverlightのためだろ
そんくらい察しろ
0061デフォルトの名無しさん2013/11/16(土) 20:22:48.77
M$はAppleの真似やめてM$ Acountは無料にしろよ
WPやWin Storeアプリなんて誰が金払ってまで作るんだよw
売れたら30%手数料でいいだろ、M$ごとき落ち目がAppleと同じ目線で商売すんな

>>58
Xamlでネイティブ・WP・WS・WebのUIをマルチで作れるなら逆転あるわ
0062デフォルトの名無しさん2013/11/16(土) 20:44:37.66
おじいちゃんは黙ってデスクトップにしがみついてれば
いいだろう無理するな
0063デフォルトの名無しさん2013/11/16(土) 20:56:19.80
>>61
本当は、そのWebの部分をSilverlightでどうにかするハズだったんだよなあ

iPadの出て来たタイミングが、マジで癌だった
後3年くらい遅けりゃねえ
0064デフォルトの名無しさん2013/11/16(土) 21:05:42.45
WebはバイトコードDOMみたいな世界に中々いけないな
0065デフォルトの名無しさん2013/11/16(土) 23:37:39.59
拡張子が.xamlのWebページって一度も見掛けた事ないな
まあ有っても困るんだけど

LooseXAMLを流行らせようと思ったら、
IEが大きなシェア率を占めていた時代にやらなきゃ駄目だった
0066デフォルトの名無しさん2013/11/17(日) 00:53:57.37
おい、NaNってなんやねん!
Width,HeightはNaNでActualは0返しやがる、どうやったらサイズ取得できんねん!
ホンマWPFは地獄やで!
0067デフォルトの名無しさん2013/11/17(日) 03:54:46.28
WPFバグ多すぎ、しかもよくわからんバグがある
ColorのGとBがある条件下だと逆になるとかどういう設計なんだ
0068デフォルトの名無しさん2013/11/17(日) 04:25:47.78
There is no design, only WPF.
0069デフォルトの名無しさん2013/11/17(日) 11:13:05.47
>>63
いまならSilverlight on javascriptとかいけんじゃねーの。
コンパイラスイッチでILがjavascriptに変換される感じで。
まぁ実際作ったりはしたんだろな。でモサモサすぎてオクラになってる予感
0070デフォルトの名無しさん2013/11/17(日) 11:16:04.16
>>66
あー俺もストアの方だがRichEditBoxのDesiredHeight取りたいんだが取れたDesiredHeightも0でマジファックですわ(´・_・`)
0071デフォルトの名無しさん2013/11/17(日) 11:21:18.97
中間コードをJavaScript化しても、あまり意味無い気がする

SLで(xamlで)作ったGUIをWebブラウザ上で表示するには、SLプラグインが必要な訳で
SLプラグインが動く状況なら、SLに中間コードを実行させりゃ済む話だからなあ

LooseXAMLで良けりゃIEはSL不要だが、他のWebブラウザに対応する事を考えるとSL必須だし
0072デフォルトの名無しさん2013/11/17(日) 11:27:13.28
つか、Silverlightは元々JavaScript使える
SL1.0の頃はむしろ、JavaScriptしか使えなかった

マネージコードと比べて出来る事は非常に少ないが、
あのAPI群を拡張出来ない訳は無いんだよな
0073デフォルトの名無しさん2013/11/17(日) 12:05:06.79
RIAプラグインはSilverlightもFlashも、モバイル界隈から嫌われてるからな
こればかりはしゃーない

iOSは一貫して非対応、(サードパーティ製のFlash使用可能ブラウザとかはあるけど)
AndroidもFlash対応を謳ってたのが、非対応に方針転換
WindowsPhoneチームでさえ、プラグイン類の搭載に否定的

デスクトップ界隈では、まだしばらくRIAプラグインの需要はあると思うが
今後どうなってくんだかな
0074デフォルトの名無しさん2013/11/17(日) 15:56:10.34
>>70
ホンマなんやねんな!
Actual、Desired、NaNとかイミフや!!
WinFormsにBitmapEffectとAnimationClock実装されればWPFなんてつかわんわ!!
0075デフォルトの名無しさん2013/11/17(日) 15:57:32.30
残念
すでにメンテモードなWinFormsには
されないんです
0076デフォルトの名無しさん2013/11/17(日) 15:59:13.44
それとWPFウィンドウを透過したらWindow Form Hostまで透過処理されるバグさっさと直せ!
0077デフォルトの名無しさん2013/11/17(日) 16:54:32.06
Hostの上にコントロールを置けないのを直してほしいわ
0078デフォルトの名無しさん2013/11/17(日) 19:38:39.39
直そうと思ったけど、問題がありすぎてだめでした(・ω<)

詳しくはconnectを見てね
0079デフォルトの名無しさん2013/11/17(日) 19:41:01.93
URLくれ
酒の肴にする
0080デフォルトの名無しさん2013/11/17(日) 19:51:26.74
>>68
Ghostbustersか
いつの日かWPFも亡霊と呼ばれる日が来るだろう
0081デフォルトの名無しさん2013/11/17(日) 20:56:15.91
ストア・アプリもXAMLなんでしょ?
酷すぎてHTML5+JScriptの方が流行るかもしれないけど
0082デフォルトの名無しさん2013/11/17(日) 20:57:34.24
ストアアプリなんて「出さないとそれなりのダメージがある」人しか作ってないような
0083デフォルトの名無しさん2013/11/17(日) 22:19:47.29
vs2013で initcomponents での例外が出て参った
普通のビルドでは問題ないのにバッチリビルドで100%発生
どうもg.csのコンパイルがおかしい感じ
0084デフォルトの名無しさん2013/11/17(日) 22:24:19.97
ばっちりビルドと読んでしまったw
首釣ってくる
0085デフォルトの名無しさん2013/11/18(月) 00:35:37.45
>>83
文字列リソースをVSのデザイナの出力そのままでBindingしてない?
私はそれで糞ほど嵌ったから参考になれば。今はExtension書いて回避してる。
0086デフォルトの名無しさん2013/11/18(月) 03:37:54.68
>>77
上におけないどころかScrollViewerとかはみ出るとか実用度にかなり疑問を感じるよね
0087デフォルトの名無しさん2013/11/18(月) 06:47:44.95
>>84
俺もだw
0088デフォルトの名無しさん2013/11/18(月) 07:20:41.27
>>85
お、書いてる書いてます
確かに落ちる部分はresorceがらみのよう
bind方法が悪いのですか、ちょっといろいろためしてみよう
0089デフォルトの名無しさん2013/11/18(月) 07:39:44.90
>>71
いや、要はそのプラグインごとjavascript化して動けばいいと。
技術的にはいけると思うけど遅そう(´・_・`)
0090デフォルトの名無しさん2013/11/18(月) 07:44:06.01
>>74
必要サイズ計測用に作りたてのでやったら0だったけどダミーで貼り付けた奴だと取れた。なんざんしょ。
でも自分はフォームに戻ろうとは思わんなー
0091デフォルトの名無しさん2013/11/18(月) 08:07:22.10
>>89
HTML5のCanvasを使えば、出来なくは無い…のかねえ
でも、HTML5はDataGridがお蔵入りになるレベルだからな
0092デフォルトの名無しさん2013/11/18(月) 09:27:03.05
>>91
それは比べる対象違うダロ
0093ガスライティングで検索を!2013/11/18(月) 10:21:33.82
カルト宗教団体は、信者や敵対者に対して組織的な嫌がらせを行い
マインドコントロールしなければ組織を維持、拡張することができません

そのため、証拠を残さず、訴えられないように、ターゲットを集団で威圧、監視し、嫌がらせを行う「ガスライティング」という手法が必要なのです

カルト教団がどのように信者のマインドをコントロールしているのか知って下さい
[ガスライティング 集団ストーカー カルト]などで検索を!
...
0094デフォルトの名無しさん2013/11/18(月) 20:31:55.16
>>90
どこかのヘルプでWPFでは入れてるコンテナとか次第で勝手にサイズ調整するから云々というのを
読んだ記憶がある。GridやらDockPanelやらStackPanelやら複合で駆使している時点で良く分からん。
こういう内部的に○×してて外からアクセスできるプロパティからいじれないというのは多い気がする。
とはいえ、俺も今更Formsに戻る気はしない。
0095デフォルトの名無しさん2013/11/18(月) 21:01:17.21
0とかNaNになるのはタイミングが悪い
だいたい参照が早すぎる
ロジックとVisualは別々でうごいてる
0096デフォルトの名無しさん2013/11/18(月) 23:45:38.13
DataGridTemplateColumnにDataTableの列をバインドしたいんですが、
DataTemplateを外出しにした場合はどうやるのでしょうか?
0097デフォルトの名無しさん2013/11/18(月) 23:52:17.46
外だしってのはどっかのResourcesに入れたってこと?
まあ別にそれで何が変わる訳でもない
0098デフォルトの名無しさん2013/11/19(火) 00:10:25.85
DataTemplateはどこかのリソースに入れてます。
<DataGridTemplateColumn CellTemplate={StaticResources キー} Binding={Binding 列名}/>
のようにしようとしたんですが、Bindingを指定できないみたいで、質問しました。
どういう感じに指定したらいいのでしょうか?
0099デフォルトの名無しさん2013/11/19(火) 00:20:46.89
あーそれね。
どういう感じにも指定できないから。
DataTemplateの中に直接Bindingを書いてね。
書き終わったら↓に行って「使えねーなカス」って報告しといて。
http://connect.microsoft.com/
01003332013/11/19(火) 00:44:57.14
VとVMのどっちに書けばいいんだ?って多くないっすか?
例えばComboBox ItemとかXamlに書いた方がいいのかVMで書いた方がいいのか
結論からいえばMVVMってVとMの粗結合が目的っすよね?
そのためのVMだからVとVMが密結合になるのってどうしようもないと思うんですが
0101デフォルトの名無しさん2013/11/19(火) 00:52:21.20
Presenterなんだから明らかにV要素です
0102デフォルトの名無しさん2013/11/19(火) 12:45:35.96
>>100
役目を理解、判断できてないだけ。
なんか自分の無知を棚に上げて批判するやつ多いよなぁ。

まぁ、でもさ。ルールに縛られるのが一番阿呆らしいよ?書きやすいように書くのが
正解だと思う。同じものができるならルールに縛られて冗長なコード書いて生産性
下げるより多少メンテナンス性落ちても生産性上がる方が現場向き。
美しいとかなんとかはアカデミックな連中に任せておけば良い。
最後はそのバランスだし人に正解を求めるものではない。
0103デフォルトの名無しさん2013/11/19(火) 12:55:13.14
×書きやすいように
○メンテしやすいように
0104デフォルトの名無しさん2013/11/19(火) 13:17:00.78
>>102
何当たり前のこと言ってるの?

と言いたい所だけど・・・MVVM関連はルール重視に偏りすぎてるので
こういう当たり前のことを再確認したくなるね。
0105デフォルトの名無しさん2013/11/19(火) 13:50:57.25
>>100
XAMLで書いたら固定になっちゃうから、
東西南北とか十二支、星座とか、
選択肢がほぼ固定なもの。Enumでも定義できるようなのは
XAMLで書いてもいいとは思う。そういう場合くらいしか使わないな。

選択肢の内容が毎日のように常時変化するなら、
VMのコレクションにバインドする方がいいね。
0106デフォルトの名無しさん2013/11/19(火) 14:08:52.91
>>104
その当たり前のことをわかってないレスに対して言ってるんだろうが。
0107デフォルトの名無しさん2013/11/19(火) 14:29:13.41
この項目にはこれらの値しか入らないってのがVMレベルまでの仕様なら
場合によってはXAMLに全部書いちゃってもいいと思うよ
さすがにDBに入れる値を制限するとかだとXAMLに書くのはゴミカス設計と言わざるを得ないが
0108デフォルトの名無しさん2013/11/19(火) 14:50:02.25
>>94
WPFのレイアウトは、設定できる範囲が多すぎるため
複雑なことも出来るんだが、どうすればどうなるってのが理解し難くてね

この前RowDefinitionのHeightをBindingしたんだが、うまく行かずに
同じものをコードビハインドでいじったらうまく行ったり
0109デフォルトの名無しさん2013/11/19(火) 19:20:24.66
MVVMと言えば、
http://www.atmarkit.co.jp/fdotnet/chushin/wpfsluipattern_02/wpfsluipattern_02_01.html

この記事のサンプルでViewの「次へ」ボタンのキャプションの文字列を(ステートに応じて変えるために)
VM側に持たせてるのはやっぱり変だと思うんだけどどう思う?
0110デフォルトの名無しさん2013/11/19(火) 19:23:28.00
変だと思うよ
0111デフォルトの名無しさん2013/11/19(火) 19:34:23.06
>>99
まじかよ・・・
ってことは、同じDataTemplateを再利用するなんてほぼ不可能じゃねえか
0112デフォルトの名無しさん2013/11/19(火) 19:48:12.70
まだ君は地獄の門の前に立っているに過ぎない
希望を捨てる覚悟はありますか?
0113デフォルトの名無しさん2013/11/20(水) 08:24:00.59
>>111
DataGridTemplateColumnにバインド設定することは、
XAMLだけでは多分無理。
コードビハインドでは一応可能だよ。
0114デフォルトの名無しさん2013/11/20(水) 11:46:32.03
>>113
どうやるか教えてください。
0115デフォルトの名無しさん2013/11/20(水) 12:13:56.12
>>114
ここの質問1の回答参考にしてみて
http://social.msdn.microsoft.com/Forums/ja-JP/48b27166-64ac-4a83-a13a-c03106421c72/
0116デフォルトの名無しさん2013/11/20(水) 16:47:03.32
>>103
メンテナンス性って幻想だと思う。というか「ルールに縛られてないで」の意味が
わかっていないからそんな突っ込みするんだよな。

そもそもメンテナンスし続けて10年動かすプログラムをWPFで書いている奴が
どれだけいるのやら・・・。
0117デフォルトの名無しさん2013/11/20(水) 20:00:03.48
Modelさえ綺麗に隔離されてれば正直VCだのVVMだのはごりごりでいいよね
0118デフォルトの名無しさん2013/11/20(水) 20:30:29.83
>>117
出来ればVMはViewがなくても動いてくれるとユニットテストできて助かります。
0119デフォルトの名無しさん2013/11/21(木) 00:07:46.72
>>117
VとCって厳密に切り離せるの?

ほとんどの場合VがCを内包しちゃってるよね
Vに全く依存してないCってSmalltalkくらいでしか見たことが無い
0120デフォルトの名無しさん2013/11/21(木) 10:42:05.69
そもそもMVCってのがVに線を引くとか四角を塗り潰すとかしか機能がなかったころの残滓だからな
0121デフォルトの名無しさん2013/11/21(木) 12:36:23.86
お昼の質問
ListViewのソースにobservalcollectionをバインドしています
1秒ごとに要素を追加したいので
Model内でループして1秒間隔でコレクションに追加しています
所が描画はModelの処理が終わるまでされません

DoEvents相当の処理を間に入れてやると1秒ごとに表示されますが
WPF的にはどのように実装するのが正しいのでしょうか
0122デフォルトの名無しさん2013/11/21(木) 15:03:06.08
>>121
ループじゃなくてタイマー使えよ
0123デフォルトの名無しさん2013/11/21(木) 21:05:53.01
VとVCを完全に切り離すって相当しょっぱいUIとデザインなんでしょ?
だってVのイベントやロジックはVCに書くのにどうやってVとVC切り離すの?
0124デフォルトの名無しさん2013/11/21(木) 21:07:16.56
(うわぁ)
0125デフォルトの名無しさん2013/11/21(木) 21:42:05.01
(頑張ろう)
0126デフォルトの名無しさん2013/11/21(木) 21:45:05.68
(結婚しよ)
0127デフォルトの名無しさん2013/11/21(木) 22:47:24.15
VCって何の略?
ボイスチャット?
バーチャルコンソール?
ビタミンC?
0128デフォルトの名無しさん2013/11/21(木) 23:02:57.23
ベトコン
0129デフォルトの名無しさん2013/11/21(木) 23:08:12.19
べんちゃーきゃぴたる
0130デフォルトの名無しさん2013/11/21(木) 23:13:57.66
Visual Cが出てこないとか
0131デフォルトの名無しさん2013/11/21(木) 23:24:00.61
ありえんよな
0132デフォルトの名無しさん2013/11/22(金) 10:57:04.09
VS2013 C# WPFアプリ実行時InitializeComponent内でXamlParseException例外が発生してしまう件について調べてみた。困っている人いると思うのでメモついでに貼っておきます。だれかMSに通報してください。

発生する条件
・ソースコードがまったく同じでも発生することを確認
・リビルドしたときに発生する
・リソースをStaticResourceでバインドしていると発生する?

回避策
・いちど例外が発生する該当xamlファイルを修正(当たり障りの無い部分を消して)ビルドして、修正箇所をUndoして再ビルドすると回避できる

原因
問題なく動作するときと例外が発生する場合のobj構築に以下の差異発見
・***.FileListAbsolute.txt
***.csprojResolveAssemlyReference.chach
・***_MarkupCompile.lref
・GeneratedInternalTypeHelper.g.cs
上記の中を見ると、どうもリビルドで作成した場合に各部参照の整合が取れていない様子
このせいでexe等バイナリ系がすべて違う内容になり、結果として実行時エラーがでるよう
0133デフォルトの名無しさん2013/11/22(金) 12:18:41.04
xaml関連はそんなんが多すぎる。xamlで文句タレてきたら、最初から信用してないから
VS閉じて開き直したり、なんか一通りやってそれでも出るなら調査開始するw
0134デフォルトの名無しさん2013/11/22(金) 14:01:29.99
>>132
自分でConnectあげろよ
0135デフォルトの名無しさん2013/11/22(金) 14:55:17.62
>>133
俺も何か変なこと起きたらVS落として中間ファイル全部手で消してから全コンし直す。
メインは2012だけど、この環境でうまく解釈してくれないものも2013だと問題ないし
開発環境として着実に進化はしてるんだと思う。
0136デフォルトの名無しさん2013/11/25(月) 18:46:08.52
とてもプログラマー板とは思えない書き込みだらけのこの板、このスレッド。
何も得るものなどない。煽り、叩き、馴れ合いしか能のない住人達。
これが今の日本のIT産業の現状なのですね。
せめてこの板の住人が、リアル厨房だらけであったことに望みを託して、私は
この板を本日限り去ることを決心いたしました。皆さん、がんばって勉強して
立派な大人になってください。さようなら。
0137デフォルトの名無しさん2013/11/25(月) 18:49:02.74
コピペでも狙ってんの?
VIPの方がオススメ
0138デフォルトの名無しさん2013/11/29(金) 02:05:23.08
なんで自作カーソル扱えないんだろ
0139デフォルトの名無しさん2013/11/29(金) 04:57:45.42
UI描写が内部的にDirect X2Dとベクターで描写されてるだけでWPFそのものの表現力なんてゴミじゃん
作ろうと思えば作れるとその機能を既に持ってるでは話が違うだろうと
なーんもないんだよWPFは、これで使って欲しいって馬鹿じゃねーのと
0140デフォルトの名無しさん2013/11/29(金) 13:44:56.87
wpfは簡単に見た目を変えられるから、デザイン凝りたい時は十分使える
でもな完成度がイマイチなんだわ
0141デフォルトの名無しさん2013/11/29(金) 14:45:14.06
つーてももっと完成度高いフレームワークある?
0142デフォルトの名無しさん2013/11/29(金) 15:07:30.58
あったらPart17までスレが続くわけがねぇ
0143デフォルトの名無しさん2013/11/29(金) 16:41:20.22
Sonyのスマートフォンのスレなんてまだ発売されてないのに20スレまで行ってるぞw
0144デフォルトの名無しさん2013/11/29(金) 17:07:13.07
なんかこう、属性が違くねーか…wpfでどうwktkしろってんだw
0145デフォルトの名無しさん2013/11/29(金) 17:29:47.66
日本で売っても成功しないの判ってるから
無駄に戦わず見捨ててるのかもな
0146デフォルトの名無しさん2013/11/29(金) 19:33:56.43
Windows Phoneが頑張ればShilverlight for WP経由でWPFも賑わうのにな
0147デフォルトの名無しさん2013/11/29(金) 20:20:47.64
Modern UI for WPF使ってる人います?

Nuget経由でインストールするとVSにこれのプロジェクトテンプレートが追加されると思うんだけど、
このテンプレートで作ったプロジェクト、俺の環境では必要なdllへの参照設定がされてない状態で
作成されるんだけどこういうもの?
0148デフォルトの名無しさん2013/11/30(土) 15:47:50.23
DataGridのBindingで
<CheckBox IsChecked="{Binding Path=bool1, Mode=TwoWay}"/>

<DataGridCheckBoxColumn Binding="{Binding Path=bool2}"/>
ってどう違うんですか?
public class bool_container {
public bool bool1 { get; set; }
public bool bool2 { get; set; }
}

というようなクラスのboolを変更したいのですが、bool2のほうは更新されるのですが
bool1のほうは見た目のチェックは変わるのですがbool_container内の値は変わりません

diag:PresentationTraceSources.TraceLevel=Highも試してみましたがよくわかりませんでした
0149デフォルトの名無しさん2013/11/30(土) 17:49:25.04
今バインドでthis.DataContext %3d hogeかxxx%3d{Binding}しかわからなくて使ってないんだけど
個別にバインドしたいときってどうしたらいいんでしょうか
変数のように(Xaml)<button content%3d{Binding hoge} /> (C#)hoge %3d 1;
みたいな
0150デフォルトの名無しさん2013/11/30(土) 17:50:12.72
なぜかイコールが%3dに化ける・・・
0151デフォルトの名無しさん2013/11/30(土) 18:57:42.87
>>150
==157cm
普段の行い?
0152デフォルトの名無しさん2013/11/30(土) 23:35:12.32
>>149
ButtonにもDataContextがあるから、そこにオブジェクトを放り込めばいい
0153デフォルトの名無しさん2013/12/01(日) 06:02:46.30
個別にするならSourceに指定するのが基本だな
DataContextは同じものへのバインドを使いまわす時に
親のコントロールで一度だけ指定して済ませるためのもの
0154デフォルトの名無しさん2013/12/05(木) 16:18:15.44
マウス以外のデバイス制御を行っているのですが
SendInputとかWindows自体を操作するのではなく
マウスのルーティングイベントを意図的に発生させる方法はないでしょうか?

ImageにMouseLeftButtonDownを持たせて指定座標にImageがあればMouseLeftButtonDownを発生させたいです。

ご教授よろしくお願いします。
01551542013/12/05(木) 18:56:31.90
http://msdn.microsoft.com/ja-jp/library/ms171548(v=vs.110).aspx

ここに書いてるようにすれば・・・と思ったけど
WPFでは出来ない?
0156デフォルトの名無しさん2013/12/05(木) 19:40:54.47
System.Windows.Forms.MouseEventArgs mea = new System.Windows.Forms.MouseEventArgs(System.Windows.Forms.MouseButtons.Left, 1, 120, 120, 0);
System.Windows.Forms.Control.OnMouseClick(mea);

OnMouseClickはアクセスできない保護レベルになっています・・・ってなんだよー!
0157デフォルトの名無しさん2013/12/05(木) 19:51:09.74
ちょっと何いってんのかわk(
0158デフォルトの名無しさん2013/12/05(木) 19:56:14.62
>>157
すみません。
WPFでマウスイベントをシミュレーションしたいのですがコードの書き方がわからず
調べてるうちに>>155にたどり着いたのですが、実際コードに起こしてみたのが>>156
なのですが、

エラー 5 'System.Windows.Forms.Control.OnMouseClick(System.Windows.Forms.MouseEventArgs)' はアクセスできない保護レベルになっています。

と出て結局出来ませんでした。

WPFではマウスイベントのシミュレーションはできないのでしょうか?
0159デフォルトの名無しさん2013/12/05(木) 20:43:16.15
WPFなのにSystem.Windows.Formsとはこれいかに?
0160デフォルトの名無しさん2013/12/05(木) 20:49:44.29
仕事なのか趣味のプログラムなのが気になる(´・_・`)
0161デフォルトの名無しさん2013/12/05(木) 20:50:51.09
>>154
ルーティングイベントを起こすなら UIElement.RaiseEvent を使う
0162デフォルトの名無しさん2013/12/05(木) 22:01:13.98
>>160
趣味なら他人が教えようとしても自力で調べるだろ。
0163デフォルトの名無しさん2013/12/05(木) 22:08:29.06
MVVMでビヘイビアやトリガーをXAMLに書く必要があるのが高すぎる敷居に思える
コードビハインドでまずFormsから移行させていつPrismに行くか…
0164デフォルトの名無しさん2013/12/05(木) 22:28:50.00
ビヘイビアとか面倒くさすぎるわ
ユーザーコントロールじゃダメなの?って思ってしまうわ
0165デフォルトの名無しさん2013/12/05(木) 22:57:21.83
掲示板を自分の感想を述べる場所だと信じている人がいるんですよね。
しかし、最近の研究で、そうではないことがわかってきたんです。
0166デフォルトの名無しさん2013/12/05(木) 23:07:08.82
日記帳とも違うはずなんだがな
0167デフォルトの名無しさん2013/12/05(木) 23:26:03.31
便所の落書きですよ

本気で流行らそうとしてないよね
VB6切ったみたいにWinForms切ればいいのに
0168デフォルトの名無しさん2013/12/05(木) 23:28:22.52
ふかのうです
0169デフォルトの名無しさん2013/12/05(木) 23:38:33.76
WinForms切ったらWindowsマジで終わるぞw
既にスマホ・タブのモバイルでは開発環境として人気も魅力ゼロだからな
WinForms捨てるってことは業務システム捨てるってことと同義だろ、WPFなんてグリッドすらまともに使えなくてサードのツールパックないと話にならねー
俺から言わせればさっさとWPF捨ててWinFormsを進化させろと
MVVMでユニットテストが楽(笑とかどうでもいいわ、その他の部分で効率がガタ落ちになる
0170デフォルトの名無しさん2013/12/05(木) 23:54:41.85
何でこのスレ来たの?
0171デフォルトの名無しさん2013/12/06(金) 00:06:35.07
あんまり言われないけどWPFの2DのグラフィックってGDI+より分かり難いしパフォーマンス悪いし、
いいとこないよねw

もうちょっと何とかならなかったのか
0172デフォルトの名無しさん2013/12/06(金) 00:11:21.92
具体的にConnectで教えてやれよ
俺はもうあきらめた
0173デフォルトの名無しさん2013/12/06(金) 04:47:50.15
>>169
現場PG「WPFの完成度が80パーセント?冗談じゃありません。現状でWPFの性能は100パーセント出せます。」
主任「グリッドすらまともに使えない。」
現場PG「あんなの飾りです。偉い人にはそれがわからんのですよ。」
主任「使い方はさっきの説明でわかるが、WPF私に使えるか?」
現場PG「主任の能力は未知数です、保証できる訳ありません。」
主任「はっきり言う。気にいらんな。」
現場PG「どうも。気休めかもしれませんが、主任ならうまくやれますよ。」
主任「ありがとう。信じよう。」
0174デフォルトの名無しさん2013/12/06(金) 15:11:28.37
>>169
モバイルはXamarinあるからイケる!!
0175デフォルトの名無しさん2013/12/06(金) 15:42:18.25
まぁ、がんばれ
0176デフォルトの名無しさん2013/12/06(金) 17:55:11.16
シェイプ4万個出しただけで劇おもぷんぷん丸なんだけど
0177デフォルトの名無しさん2013/12/06(金) 18:01:03.54
5千個ぐらい3Dポリゴン出しただけでがくがくしだすから当たり前だろ
0178デフォルトの名無しさん2013/12/06(金) 18:11:56.22
>>174
>>169
>モバイルはXamarinあるからイケる!!

Xamarinのサブスクリプションは高くて制約多すぎるから流行らんよw
残念
0179デフォルトの名無しさん2013/12/06(金) 18:20:28.81
たぶん使ったこともないような奴が行けるとか言ってると思うの、あれは
0180デフォルトの名無しさん2013/12/06(金) 18:49:28.74
>>178
会社だとあれぐらいの値段は余裕。
今ガチで使ってるけど色々トラブルはあるけど使えるというか、iPhoneと泥、窓向けに別々に作るとかもうありえん。
0181デフォルトの名無しさん2013/12/06(金) 18:53:14.76
窓向けは余計だろう
需要ないもん
0182デフォルトの名無しさん2013/12/06(金) 23:59:16.19
>>181
それを判断するのはお前じゃない(´・_・`)
0183デフォルトの名無しさん2013/12/07(土) 01:12:50.00
WPFやってるとクマができる
気のせい?
0184デフォルトの名無しさん2013/12/07(土) 11:01:51.17
気のせい
0185デフォルトの名無しさん2013/12/07(土) 15:41:47.43
クマってなんだ。馬鹿馬鹿しい制約を自分に課して寝不足にでもなってるんかw
0186デフォルトの名無しさん2013/12/07(土) 20:50:34.83
毎日8時間くらい寝てるけど、クマが消えないわ
SEの宿命なのかね?女の子は可哀想だ
0187デフォルトの名無しさん2013/12/07(土) 22:11:50.23
鮭取ってくるまで育てたらいい
0188デフォルトの名無しさん2013/12/07(土) 22:13:37.08
ホーリーランドごっこすれば気にならなくなるさ
0189デフォルトの名無しさん2013/12/08(日) 03:38:15.75
杭全
0190デフォルトの名無しさん2013/12/09(月) 22:50:46.60
久しぶりに自作アプリ立ち上げたら文字がにじむようになった

一体どのタイミングでおかしくなったんだろ?
0191デフォルトの名無しさん2013/12/10(火) 12:02:58.44
>>190
RotateTransformでも設定してるんじゃない?
0192デフォルトの名無しさん2013/12/11(水) 19:36:02.58
>>190
ディスプレイごとに拡大率変えたりしてたりしない?
Win8.1からのPer Monitor dpiの設定をしてると、WPFアプリでもDPIスケーリングがかかってボケボケになることあるよ。
0193デフォルトの名無しさん2013/12/14(土) 23:48:57.29
ProgressBarで動きが妙なんですが、原因がどうもわかりません。
xamlでは以下のように定義。

<ProgressBar x:Name="bar" Height="20" Minimum="0" Maximum="100"/>

サブスレッドなどは使わずにButtonクリックで単純にValueを更新させるんですが、

Dim max As Integer = 10000
For i As Integer = 0 To max
  Dim d = CDbl(i) / CDbl(max) * 100
  If bar.Value <> d Then
    Me.Dispatcher.Invoke(Sub()
                    bar.Value = d
                  End Sub, Windows.Threading.DispatcherPriority.Loaded)
  End If
Next

0〜8まではバーが動くんですが、そこから表示が更新されず、ループ終了と同時に100に更新されてしまいます。
Windows8 + VisualStudio2012の環境では普通に動作してたんですが。
試しに Windows7 + VisualStudio2010で動かしてみたら上記のようなことになってしまいちょっと困ってます。
0194デフォルトの名無しさん2013/12/15(日) 00:03:36.56
>>193
酷いコードだな...

何がしたいのかさっぱり分からないが、UIスレッドのループの中で表示プロパティを
連続して変化させても表示が追従するわけがない。
0195デフォルトの名無しさん2013/12/15(日) 00:09:14.79
95の時代から同じことやってるが未だに浸透してないんだよなこの手の話は
0196デフォルトの名無しさん2013/12/15(日) 00:47:03.48
>>194
Windows8では動作するんですが、あなたの常識では追従するわけないんですね
0197デフォルトの名無しさん2013/12/15(日) 02:15:37.44
逆切れかよ馬鹿だね。
だいたいUIスレッドでDispatcher.Invokeって意味分かって使ってるのか。
0198デフォルトの名無しさん2013/12/15(日) 02:34:06.84
ほんなわけあるめえ
大体バージョン違って同じ動作する保証なんて誰がしてるってんだ
花畑かよ
春爛漫だなって感じ
0199デフォルトの名無しさん2013/12/15(日) 02:39:16.23
UIスレッドと描画スレッドって別じゃなかったっけ
0200デフォルトの名無しさん2013/12/15(日) 02:43:02.52
この話で描画スレッドが介在する余地はどこにもない
UIスレッドでDispatcher.Invokeを呼び出してUIスレッドで値をセットしようとしてるんだから
0201デフォルトの名無しさん2013/12/15(日) 09:02:28.93
>>200
いやここで言ってるのはいわゆるUIスレッド建てるとそれに併せてシステム的な意味での描画スレッドが一対一で作られるよねって話だと思うが。
確かそうだったはずだがそこら変の挙動疎いのでだれかよろ。
0202デフォルトの名無しさん2013/12/15(日) 09:23:38.73
> UIスレッド建てるとそれに併せてシステム的な意味での描画スレッドが一対一で作られる
当然、それを知ったうえで、
> 描画スレッドが介在する余地はどこにもない
って言ってるんでしょ。

俺も同意見。
違うと思うなら、だれかよろじゃなくて、自分で反例を出しなよ。
02031932013/12/15(日) 09:40:44.91
Windows.Threading.DispatcherPriority.Loaded を Windows.Threading.DispatcherPriority.Background にすれば動作します。
でもなぜBackgroundだと動くんだろ。だれかわかる人います?

Invokeは同期処理ですから、優先順位をRender(6)より低く設定してInvokeすれば表示更新が優先処理されると理解してたんですが。
0204デフォルトの名無しさん2013/12/15(日) 09:52:50.55
>>194-195
よう、老害!

メッセージループに戻るまで表示は更新されない。
95時代の常識で考えるとそう思うよな。

だが違うんだよ。俺も試して驚いたが。

>>193のように、この動作に頼るのはまずいが、
過去の常識に囚われてると、原因不明の画面ちらつきとかを引き起こしそうだ。
02051932013/12/15(日) 10:04:13.57
>>204
すいません、このコードに頼るのはまずいと承知してるんですが、Dispacherの動きを理解したくてこんなことやってます。
ググると疑似DoEventsの実装サンプルみたいに紹介されてるんですよね。
0206デフォルトの名無しさん2013/12/15(日) 10:05:05.83
>>203
WPFにはUIスレッドでの処理が滞ってると、表示更新の優先度を下げる機構がある。

その、優先度が下がるタイミングが>>193のバーが8の時だったんだろう。

> Background にすれば動作します。でもなぜBackgroundだと動くんだろ。

優先度が下がった後の表示更新より、さらに低い優先度だからじゃないかな?
0207デフォルトの名無しさん2013/12/15(日) 10:06:53.72
Windows8では起きないって事は、
この優先度を下げる処理は廃止されたのかもね。

正直俺も余計なお世話だと思ってたし。
0208デフォルトの名無しさん2013/12/15(日) 10:12:06.19
WPF名物、もっさりスクロールの原因でもあった
0209デフォルトの名無しさん2013/12/15(日) 10:18:17.42
>>206-207
ありがとうございます。なるほど優先順位が途中で変更されるんですか。
ヘルプを読んでても全然そのへん読み取れなかった。もう少し自分でも調べてみます。
0210デフォルトの名無しさん2013/12/15(日) 10:26:38.34
>>202
なんでお前は敵対心丸出しなの?
おれはこんなのもなかったっけ?っていってるだけなのに。
お前が老害なのか知らないけどストレス溜まってるのか?
0211デフォルトの名無しさん2013/12/15(日) 11:06:47.27
>>197
この人のDispatcher.Invokeの意味ってのを聞いてみたいw
0212デフォルトの名無しさん2013/12/15(日) 12:52:36.91
ループのたびにプログレスバーを更新するのも考えものだね
1000回ループなら10回毎に更新とか普通に組む
02132122013/12/15(日) 13:14:46.44
あ、悪い。いつもの自分のやり方と違っていたから勘違いしたわ
0214デフォルトの名無しさん2013/12/15(日) 17:08:38.03
>>193
メッセージングのお勉強が足りない
ブロックしてる間にUIいじってもだめよ
0215デフォルトの名無しさん2013/12/15(日) 18:49:08.62
>>193
なんでブビ厨がこのスレきてんの?
え?同じ.NETで同じWPFだから?
一緒じゃねーよksが!wwww
0216デフォルトの名無しさん2013/12/15(日) 19:24:14.35
>>193のレベルが高すぎてほとんどついてこれるやつが
いなかったようだ
恥ずかしいなw
0217デフォルトの名無しさん2013/12/15(日) 19:28:34.24
確かに
>Dim d = CDbl(i) / CDbl(max) * 100
とか笑いのレベルが高すぎてC#専には伝わらんだろうな
0218デフォルトの名無しさん2013/12/15(日) 19:36:44.06
本当の笑いどころは最初から言ってるようにUIスレッドのループの中でUIをいじってるところだけどね。

老害とか言ってる奴がいたけど、むしろ>>217みたいな「テクニック」は
大昔の8bitやPC-98のBASICで使われていたもので、老害を攻める相手を間違えてるとしか思えん。
0219デフォルトの名無しさん2013/12/15(日) 19:50:12.75
別にC#専じゃないけどね、VC/VC%2b%2b、JavaScript、Pythonも書くし
それでもブビは仕様でVBA書くときくらいだな、さっさと滅んで欲しいが
VBAが消えなくとも他の選択肢、具体的にはJavaScript/Pythonが使えればまともな技術者ならみんな喜ぶと思うよ?w
0220デフォルトの名無しさん2013/12/15(日) 20:53:39.08
(別にスレッドを立ち上げて、その中でいじってるんじゃないのこれ・・・)
0221デフォルトの名無しさん2013/12/15(日) 22:47:00.89
>>218
つか「Dim d = CDbl(i) / CDbl(max) * 100」のdはDoubleになるから
次の行の「If bar.Value <> d Then」が必ず真になって
10000回すべてinvokeが呼ばれているな
更新が追いつかない原因はココだろ
0222デフォルトの名無しさん2013/12/15(日) 23:01:02.87
PregressBarのValueってDoubleじゃなかったっけ?
0223デフォルトの名無しさん2013/12/15(日) 23:11:55.02
>>222
いや「If bar.Value <> d Then」は、前回のdと今回のdを比較
つまり 「d = CDbl(i) / CDbl(max) * 100」と「d = CDbl(i+1) / CDbl(max) * 100」の比較になるから
dがdoubleだから常に真
0224デフォルトの名無しさん2013/12/15(日) 23:18:47.74
ああ、そりゃそうか
本質的なところはキューに溜まり過ぎて処理がおっつかなくなってたってところでいいのかな
0225デフォルトの名無しさん2013/12/15(日) 23:49:44.58
いや少なくともそこが本質じゃないからw
UIスレッドでループを回してアニメーションをさせるって発想そのものが根本的に間違ってる。

プログラムで間引いて(ウェイトをかけて)タイミングを調整するとか、いつの時代のテクニックだよw
0226デフォルトの名無しさん2013/12/16(月) 00:33:53.70
wait ではなくね?w OnPropertyChanged が必ず走っちゃうよ みたいな話だろ
こういう判定はするべき。そもそも論は別にして
0227デフォルトの名無しさん2013/12/16(月) 01:01:48.24
そもそもナンセンスなコードだから意図する仕様もコードから完全には読み取れないけど、
0から100まで1/10000ステップで変化させるというのは、たぶんタイミング調整のつもりなんでしょう。

実に間抜けとしか言いようがないけど
0228デフォルトの名無しさん2013/12/16(月) 01:26:52.88
結局ループから抜けてないのに描画されるのはなぜよ?って話はどうなったん?
抜けてないつもりでもなんか抜けちゃってるの?
0229デフォルトの名無しさん2013/12/16(月) 01:33:41.66
WPFはUIスレッドとレンダリングスレッドが別だから
0230デフォルトの名無しさん2013/12/16(月) 03:01:05.69
ここってひょっとして馬鹿しかいないの?
0231デフォルトの名無しさん2013/12/16(月) 03:17:42.88
そうだよ
0232デフォルトの名無しさん2013/12/16(月) 04:09:47.35
そもそもUIのプログレスを更新したいのにTask、せめてBackground Wokerを使おうと思わない頭の悪さがVBerだな〜w
考えられないがそこまで辿り着けなかったとしてもアニメーションさせたいなら何故Timerを使わないのか
その昔VBのTimerが糞すぎてブビ厨はTimerを使わずにwhile(true)DoEvents();でループさせるコードを量産した
そして現在も今時小学生でも書かないような糞コード書く・・・
ブビ厨ってなんで学習しないの?仕事から帰って家でなにやってんの?プログラミングの学習しないの?せめてGoogleさんで逆引きしないの?
0233デフォルトの名無しさん2013/12/16(月) 04:39:19.89
>>229
んじゃやっぱり上で更新するわけないと言ってたのは老害決定でいいのか。

>>232
その老害認定された人?そのせいでふぁびょってるの?
0234デフォルトの名無しさん2013/12/16(月) 04:42:45.71
なぜそこまで辛辣な物言いをしようとするのかがわからない
上を見れば切りがないし下を見ても同じで、自分を絶対的な基準にして
少しばかり自分より後から学んでいる人を萎縮させたがる精神状態は
そもそも自分自身のコンプレックスによって
引き起こされているのでは無いだろうか
0235デフォルトの名無しさん2013/12/16(月) 05:40:27.96
別に分からなくていいだろよ
お前には関係ない

はい。この話は仕舞いな。
0236デフォルトの名無しさん2013/12/16(月) 06:05:55.83
なんか頑なにUIスレッド内では表示更新しちゃダメって言い続けてる人がいるなw
できるんだからダメもクソもないだろうにwww
0237デフォルトの名無しさん2013/12/16(月) 07:41:24.78
今回びっくりしたのは、windows8が割とちゃんとしているということ
こんなコードでも動いちゃうんだな(10000回も更新して)
0238デフォルトの名無しさん2013/12/16(月) 08:11:01.39
せっかくWPFなんだからアニメーション使おうぜ。
一々ループで小刻みに画面更新しなくても、このアニメやっといて、と指定するだけで後は放置だよ。
以前、TriggerでProgressBar変化させるAction作ったけどその時のコード参考に載せとくわ。
durationで設定した時間をかけて、ToまでProgressBarのValueを変化させるアニメーション。

DoubleAnimation da = new DoubleAnimation(To, duration, FillBehavior.HoldEnd);
Storyboard.SetTargetName(da, "実際のプログレスバーの名前をここに指定");
Storyboard.SetTargetProperty(da, new PropertyPath(ProgressBar.ValueProperty));
Storyboard sb = new Storyboard();
sb.Children.Add(da);
AssociatedObject.BeginStoryboard(sb);
0239デフォルトの名無しさん2013/12/16(月) 08:15:04.04
ちなみにこのコードだと、処理の進捗状態とかを示す
ProgressBar本来の使い方には向かない。
処理本体が重くても軽くても、非同期で
ProgressBarだけ指定した時間で変化しちゃうからね。
このコード使った時は、ProgressBarを全く違う用途に使う場面だった。
0240デフォルトの名無しさん2013/12/16(月) 09:11:58.13
>>236
そもそもBindingがUIスレッドで表示更新しているんだから、それが出来なかったらWPF自体成立しませんw
0241デフォルトの名無しさん2013/12/16(月) 09:29:23.49
久しぶりにC#でGUIプログラムを作ろうと思ったら
WPFなんてのが出てたんだな。

Windowsフォームは過去の遺物になっちゃったの?
今C#でGUIアプリを作るならWPFで正解?
0242デフォルトの名無しさん2013/12/16(月) 09:57:58.83
>>241
デザイン性求められてないならWinForm、
求められてるなら仕様変更を促してWinForm
0243デフォルトの名無しさん2013/12/16(月) 09:59:24.91
WinFromsのWin32API由来の制限がうざいと思うならWPF、
特に困ってないならWinFormsだな。

WinFormsでできることをするなら、
生産性やプログラム動作速度はWPFよりWinFormsの方が良い。

WinFormsは過去の遺物だが、WPFも放置気味なので
WPFに期待してるとがっかりするぞ。
02442412013/12/16(月) 10:09:33.41
よくわからんけど2〜3年様子みれってことかな。
0245デフォルトの名無しさん2013/12/16(月) 10:18:21.48
WPFは覚えることが多いから、お気楽プログラミングには向いていないが
凝ったことやりたくなったら重宝するよ
0246デフォルトの名無しさん2013/12/16(月) 10:24:10.77
>>244
その認識で問題ない。

2〜3年後だったら、デスクトップ版WinRTも形になってるだろうしね。
デスクトップ版WinRTの状況次第では、WPFは完全にお払い箱になる。
0247デフォルトの名無しさん2013/12/16(月) 11:45:22.95
>>244
前スレにも出てたヤツ↓
http://www.infoq.com/jp/articles/Win8-LOB-Options
使う使わないは自己責任で
0248デフォルトの名無しさん2013/12/16(月) 18:57:53.29
Bindingとコントロールの合成の2点で採用する価値がある
MVVMは頑なにコードビハインドを否定してるのが意味不明
デザイナーなんて居ないことのが多いのだから学習曲線を急な勾配にする価値がない
0249デフォルトの名無しさん2013/12/16(月) 19:02:08.70
頭の固い変な人(あるいはバカの一つ覚え)
が否定してるだけでMSの大元のMVVMに関するコラムでは何も言ってねえけどな
お前も気にしなくていいぞ
0250デフォルトの名無しさん2013/12/16(月) 19:32:38.96
>>248
別にMVVMはデザイナーを分離するためじゃねえだろ
Viewん薄くするのは健全だと思うけどね
0251デフォルトの名無しさん2013/12/16(月) 19:33:54.78
ageて書くようなことか
0252デフォルトの名無しさん2013/12/16(月) 19:35:38.16
>>240
その批判はBindingが内部的に(長い)ループの中でプロパティを操作しているのでなければ成立しない。
馬鹿じゃないの。
0253デフォルトの名無しさん2013/12/16(月) 19:35:43.47
ビューン
0254デフォルトの名無しさん2013/12/16(月) 19:51:06.09
Viewを薄くするのはいいが、
それを実現するために、薄くした以上にViewModelが肥大化したら意味がない。

ViewとViewModel、どちらに書けばシンプルで短いコードになるか考え、
適切な方を選べばよい。

何も考えずに「コードビハインド無しで実装できた!」とか喜んでるのは・・・
目的と手段が入れ代わってると思うね。
0255デフォルトの名無しさん2013/12/16(月) 19:54:13.19
目的と手段が入れ替わると・・・楽しい!
0256デフォルトの名無しさん2013/12/16(月) 20:00:24.00
だよな!趣味ってそういうことだよな!
0257デフォルトの名無しさん2013/12/16(月) 20:53:10.69
>>254
ViewModel使う目的は関心ごとの分離とユニットテスタビリティだろうからそれ行けるならファットになるのもいいとは思うけど。適当に分離すればいいし。
けどコードビハインド避けてViewを薄くするためにファット化するとかだったら意味ないのは同意。好きにコードビハインド書け。
大事なのはテストされたVMの挙動を単純に表示に変えるぐらいの薄さになってればいい。
0258デフォルトの名無しさん2013/12/20(金) 21:27:32.98
.NET4.5のDataGridについてなんですが
検証処理するとき以下のようにValidatesOnDataErrors=Trueにして、チェックはIDataErrorInfoで行うようにしました

<DataGridTextColumn Binding="{Binding Data1,ValidatesOnDataErrors=True,NotifyOnValidationError=True}"/>

そうするとエラーが解消されてもValidation.Errorsにエラーが1個残ったままになるんですが
これ使い方間違ってますか?
0259デフォルトの名無しさん2013/12/20(金) 21:56:30.05
>>258
エラーを解消した後、IDataErrorInfo.this[columnName] が呼ばれてるかチェックしてみれば?
Binding 経由でプロパティを変更した場合は勝手に呼んでくれるけど、
それ以外から変更した場合は INotifyPropertyChanged も実装して、エラーが解消したプロパティを通知せんとダメよ。
0260デフォルトの名無しさん2013/12/20(金) 23:00:58.51
>>259
ありがとうございます。
エラー解消後に何も入力してなければIDataErrorInfoは呼ばれてません
Binding経由以外ではプロパティは弄ってないんです。どうも変な動きしてるんで他のコードは全部削除してみました
試しにValidation.AddErrorHandlerを使ってエラーのAdd/Removeを見てみたところ
Addが3回、Removeが2回みたいにRemoveされる回数が少ない、何を言ってるのかわからねーと思うが俺も何をされてるのかわからなかった状態です

後、妙な動きがもう一つ。
DataGridTextColumnのValidationRulesとかConverter例外とかでエラーが発生した場合は他のセルに移動できませんよね
これがIDataErrorInfoでエラーを起こした場合は他のセルに移動できてしまう、これは仕様なんだろうか、なんか統一性ない
0261デフォルトの名無しさん2013/12/21(土) 00:22:07.78
>>260
IDataErrorInfo が呼ばれてないのは、エラー要因のインスタンスと、エラー元のインスタンスが別とかじゃない?
Binding 経由で呼ばれるのは入力先のインスタンスだけだから。
INotifyPropertyChanged を実装して、エラー解消時に更新を通知してやれば消えるはず。やってみては?

あと、後半のは意図した仕様だよ。
例外やコンバートに失敗した場合だと、Binding 先のモデルへの set に失敗している→エラー対応はビュー側の責任
IDataErrorInfo の場合は set は成功している→エラー対応はモデル側の責任
0262デフォルトの名無しさん2013/12/21(土) 11:16:34.22
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100*" /> ←「1つ目」とします
<ColumnDefinition Width="100*" /> ←「2つ目」とします
<ColumnDefinition Width="200*" /> ←「3つ目」とします
</Grid.ColumnDefinitions>

としてGridを配置しており、
親のWindowの ResizeMode プロパティを CanResize にしています。
親WindowのMinWidthは400です。

このときにウィンドウを横に広げると
1:1:2 の比率で広がっていきますが、以下の動作にする方法が
ありましたらご教授願えますでしょうか。

・ウィンドウ(初期値の横幅400px)を横に広げていったとき、
  1つ目:120px
  2つ目:120px
まで広がった場合は、上記のpxで幅が固定され、
それ以上にウィンドウの横幅を広げた場合は
3つ目のみ広がっていく、ということをやりたいです。
よろしくお願いします。
02632622013/12/21(土) 11:19:21.90
うわぁぁ、すみません。
ColumnDefinition に MaxWidth プロパティがありました。。。
0264デフォルトの名無しさん2013/12/21(土) 16:41:49.30
Global Hookしたキーコードを書き換えられないようで、SendInputも調べましたがどうも難し過ぎて手がでません
LL APIだと難し過ぎるんで素直にWPFコントロールを継承してイベントをoverrideしてるんですが、今度はbaseに渡すKeyEventArgsがReadOnlyとかなんなんですかこれ、嫌がらせですか・・・
なのでKeyEventArgsインスタンス生成時にKeyを渡せたので安心したら今度はbaseに渡すにはRoutedEventArgsがほにゃららとかマジ糞すぎて泣きそうです
KeyDownで押されたキーを渡さずに指定のキーを渡す方法を知っていましたら教えてください
0265デフォルトの名無しさん2013/12/21(土) 16:54:55.50
> SendInputも調べましたがどうも難し過ぎて手がでません
とか言ってないで基礎から勉強しなおせ。

SendInputは簡単な方だぞ。
もっともっと難しい方法ならあるが、それ以上簡単な方法なんて無いって。
0266デフォルトの名無しさん2013/12/21(土) 16:56:06.72
あっち書いてこっち書いて全部レス返し無しとかなに考えてんの
0267デフォルトの名無しさん2013/12/21(土) 16:56:57.54
場当たり的にやってるからしょうがないね
0268デフォルトの名無しさん2013/12/21(土) 16:57:28.80
そりゃあ糞人間だな
0269デフォルトの名無しさん2013/12/21(土) 18:48:00.66
解決しました
実装書ける人が一人もいませんでしたね
さようなら糞PGさんたち^^
0270デフォルトの名無しさん2013/12/21(土) 18:52:20.83
今は、これが、精一杯
0271デフォルトの名無しさん2013/12/21(土) 19:27:52.48
期待する方が間違ってる
0272デフォルトの名無しさん2013/12/22(日) 18:11:22.89
適切な学習方法がわからん
2年触ってるけど学習効率が極端に悪い
0273デフォルトの名無しさん2013/12/22(日) 18:13:05.83
バインドの種類が多すぎて使い分けがわからん
XAMLに色々手を入れすぎて失敗してる気がする
0274デフォルトの名無しさん2013/12/22(日) 18:14:01.65
普通のバインドとマルチバインドの2種だろ
0275デフォルトの名無しさん2013/12/22(日) 19:13:45.83
XMLってのがそもそも筋が悪いんだよな
Jsonと違って定義が厳密すぎるんだよ
HTMLもそうだがマークアップなんてゴミだよ
しかもStyleやTemplateやResourceがJsやCSSと違ってめちゃめちゃ面倒くさくてどうしようもない
どうせならJs+HTML+CSSでStoreだけじゃなくデスクトップもウェブも統一したらええねん
0276デフォルトの名無しさん2013/12/22(日) 19:15:40.23
ValidationRulesもマークアップ拡張に書けるようにしてくれれば、後は特に不満もない
0277デフォルトの名無しさん2013/12/22(日) 19:17:16.97
定義が厳密なのはエディターとの親和性を考慮したんだと思うが
Blendが全く普及しなかったからね・・・
0278デフォルトの名無しさん2013/12/22(日) 19:38:46.82
>>277
使いこなせてないが、MSの人が使ってるの見て使えればかなり生産性高いのは分かった。
0279デフォルトの名無しさん2013/12/22(日) 19:40:59.41
HTML+CSSはHTMLのフロードキュメントをCSSで魔改造しているだけだからレイアウトエンジンとして筋が悪い
0280デフォルトの名無しさん2013/12/22(日) 19:44:45.42
そもそもBlendって単語が久しぶりに出た気がする
一つ前は>>57か・・・
0281デフォルトの名無しさん2013/12/23(月) 00:58:17.09
流れぶった切って悪いんだが、ちょっと相談に乗ってくれ

DataTemplate使った画面遷移してるんだが、画面遷移を繰り返すと、
繰り返す度にViewが生成される関係でViewに紐づいたTriggerActionが
暴発するんだ

どうやら、
1:View1とView2が交互に入れ替わるとき、View1orView2内にItemsControlで
View3が表示される
2:View3にはActionTriggerが書かれている
って言う条件下で発生するっぽいんだが、解決方法がわからん

誰か分かる奴居たら頼む

最少再現コードというか、再現プロジェクトは↓
www1.axfc.net/u/3122746?key=wpf
0282デフォルトの名無しさん2013/12/23(月) 06:42:43.74
気持ち悪いノリだな。
0283デフォルトの名無しさん2013/12/23(月) 10:45:54.77
よくこんなノリで書き込むよな。
誰も解決に協力しないだろこんなんじゃ。

(別にそれでもかまわねーぜ!であるなら、そもそも書き込むなよと思うし)
0284デフォルトの名無しさん2013/12/23(月) 11:25:22.90
>>281
InteractionRequestTrigger より ViewModel のほうが生存期間が長いから、
ViewModel の InteractionRequest に古い InteractionRequestTrigger からの参照が残ったままになってる。
(古い参照が削除されないまま、新しい View が作成される度に、イベントへの参照が追加されてる)。

解決には ItemView.Unloaded で DataContext = null しておけば良い。
0285デフォルトの名無しさん2013/12/23(月) 12:31:48.55
>>284
ホントありがとう

>>282
>>283
すまんな。このスレの空気読み切れてなかったわ。
0286デフォルトの名無しさん2013/12/23(月) 12:32:26.31
いやそもそも喧嘩腰な方が悪いから
0287デフォルトの名無しさん2013/12/23(月) 14:21:46.69
喧嘩腰…?
0288デフォルトの名無しさん2013/12/23(月) 18:54:14.52
このスレで一番喧嘩腰のレスは>>2
0289デフォルトの名無しさん2013/12/24(火) 17:09:41.78
リソースディクショナリって入れ子出来ない?

コントロール1つ配置してControlTemplate と Style の2つの辞書つくって
ControlTemplate辞書からStyle辞書のリソース見るようにして
コントロールにControlTemplate反映させたんだけど
Styleの内容が反映されないんだよね。

ControlTemplate辞書内に<ResourceDictionary x:key="hoge" Source="style.xaml">
なんて記載してみてもだめ。
ControlTemplate と Style を1つの辞書に書くと問題ない。

Blendにコード生成させたのに「解決できません(キリッ」てなるwww
0290デフォルトの名無しさん2013/12/24(火) 17:13:39.50
ResourceDictionary の入れ子は不可。ResourceDictionary.MergedDictionaries 使ってマージする。
0291デフォルトの名無しさん2013/12/24(火) 17:45:09.40
要は結果的に辞書は1つじゃなきゃアカンてことな。外部参照はマージしなきゃ見えない。
0292デフォルトの名無しさん2013/12/24(火) 18:19:02.18
>>290
入れ子不可、理解しました。

でもマージにして複数に分けてみたけど
「解決できません」が復活。

もちょっと触ってみます。
0293デフォルトの名無しさん2013/12/24(火) 18:44:08.04
>>292
<Window.Resources>内で辞書定義してたけど
App.xamlの<Application.Resources>内で定義するようにしたら
エラー・警告もなくできました。

<Window.Resources>に置いていても
Blendの「プロパティ->ローカルリソース」からは
辞書内のリーソスが見えてたので認識してるもんだと思ってました。

勉強代に20時間くらい払ってしまった。

>>290-291 ありがとうございました。
0294デフォルトの名無しさん2013/12/25(水) 01:36:01.33
>>293
プロジェクト直下に"Themes"フォルダ作ってその中に"Generic.xaml"っていう名前のリソースディクショナリを置いて、その中でマージするっていう手もあるぞ。

1アプリ=1プロジェクトならApp.xamlでもいいけど、もしスタイル適用対象のコントロールを別アセンブリ(DLL)に置くなら、
そのApp.xamlでマージできないし、"App.xaml"っていう名前のリソースディクショナリを置いても反応しないので、
そのときはこっちの方法しかない。

注意すべきはフォルダ名、ファイル名が固定だということ。
別の名前にしても反応しないから注意。

もしVSがPro以上なら「カスタムコントロール」プロジェクトを新規作成してみて。
プロジェクト直下に/Themes/Generic.xamlっていうリソースディレクトリがデフォで配置されてるから。
0295デフォルトの名無しさん2013/12/26(木) 00:05:01.38
ResourceDictionaryって何に使うの?
DataContextだけじゃダメなのか
なんかWPFの壁=Xamlなんだよね
ついついC#で全部書いちゃう
カスタムコントロールもx:nameにしないとエラーとかイミフだし
XamlもっとわかりやすくしてよM$
0296デフォルトの名無しさん2013/12/26(木) 00:19:47.02
XAMLはWPFの壁というよりは基本中の基本
0297デフォルトの名無しさん2013/12/26(木) 00:31:59.06
>>295
ResourceDictionaryを使うとローカライズするとき楽になる
Window複数使っててスタイル共通にしようと思ったらResourceDictionary使うしかないし
DataContextにスタイルやControlTemplateとか持てないでしょ、いや持てるけどやらないでしょ
・・・普通に使ってるよ
0298デフォルトの名無しさん2013/12/26(木) 00:47:24.11
コードビハインドからCommand.CanExecuteを見に行ってもいいよね?
極力シンプルにおいしいとこだけ使うようにしないとチームから批判くらいそう
0299デフォルトの名無しさん2013/12/26(木) 00:52:35.63
それならVMでコマンド用意する意味ない気がするけどね。
コマンドじゃなくて直接モデルのプロパティを見ればいいわけで。
0300デフォルトの名無しさん2013/12/26(木) 03:04:25.42
>>295
「DataContextだけでスタイル設定まで済ます」っていうのは、
Webでいうところの「HTMLの各タグにいちいちStyles属性でスタイル設定する」だと思うんだ。
データの内容に依存しないスタイルならWebでいうところのCSS、
つまりリソースディクショナリのStyleTemplateに設定したほうがいいよね。
もちろんリソースディクショナリを使わずに、View内の各コントロールのStyleTemplateを設定してもいいけど。
・・・どちらにしてもxamlは必要だけどね。

>>298
OKだと思うよ。
そのCommandをバインドしていないButtonの使用可否制御とかに使えるね。
俺ならCanExecuteの元メソッドの返り値をbool型プロパティにしてバインドするけど。
ただCommand.Execute()を生で叩くときは必ずCommand.CanExecute()で検証しないとね。
0301デフォルトの名無しさん2013/12/26(木) 07:45:38.18
普通にVMのメソッドを呼べばいい話だな
OOPの作法的にはそれを呼び出そうとする側で実行できるかチェックするのもやめて
チェックはそのメソッド内でやったほうがいい
0302デフォルトの名無しさん2013/12/26(木) 12:42:55.37
というか無造作に必ずCommand.CanExecute()で検証とか言うアホの存在が
レースコンディションで落ちるアプリを生む元なんだろうな
if (cmd.CanExecute()) cmd.Execute();の条件判断と実行の間でコンテキストスイッチが発生して
状況変わることなんていくらでもあるだろうに
0303デフォルトの名無しさん2013/12/26(木) 12:53:08.38
というかその間に別スレッドから状態変更が起きる可能性があり、かつその際に落ちる可能性のあるようなプログラム書いてんじゃねーよ
0304デフォルトの名無しさん2013/12/26(木) 13:08:01.03
それって別にCanExecuteに限った話じゃないし、
実行可否の判断ができないってことじゃねーか。どんな糞な作りしてんだよw
0305デフォルトの名無しさん2013/12/26(木) 13:36:44.09
だからCanExecuteはそもそもUI上のグレーアウト表示とかの判断にだけ使うもの
Execute呼んでいいかどうかの判断に使ってはいけない
0306デフォルトの名無しさん2013/12/26(木) 14:17:00.64
リソースディクショナリの話があったので
拾い物グラデーション辞書でも作るかと思ってググったら
geekswithblogs.net/Silverlight2/archive/2008/10/21/more-xaml-gradients.aspx
ここくらいしか見つけられんかった。

ExpressionBlendだとphotoshopのgrdファイル読み込むプラグインあるらしい。
0307デフォルトの名無しさん2013/12/26(木) 19:29:03.94
コードビハインドで確認しようがXAMLで確認しようがUIスレッド上で動くだけだろ
安全性についての明確な違いなんてあるの?
0308デフォルトの名無しさん2013/12/26(木) 21:51:50.83
>>307
だからそもそもCanExecuteで安全性チェックしちゃダメだって話なんだが(´・ω・`)
0309デフォルトの名無しさん2013/12/26(木) 22:03:37.46
>>302
「ICommandの設計思想が糞」まで読んだ。

ってか、CanExecuteでの検証OK→Executeの実行の間では、
Execute実行の安全性は確保されるのが前提だろうに。

(おそらく)CommandManagerのほうもそれで動いてるんだろうし。
0310デフォルトの名無しさん2013/12/26(木) 22:15:14.07
>>309
マルチスレッドのプログラムやったことあるのか?
0311デフォルトの名無しさん2013/12/26(木) 22:17:36.66
専用に何らかのフレームワークでも準備しない限りそんなの無理だろ
0312デフォルトの名無しさん2013/12/26(木) 22:19:40.73
もともとICommandなんてざっくりしてるのにそんなもん要求スンナ
WPFはどのタイミングでCanExecuteチェックしてるかも知らないんだろ
0313デフォルトの名無しさん2013/12/26(木) 22:21:16.76
何の話をしてるのかよく分からんが、とりあえず>>309の話は正しいよ。
最後の行は何言ってるのか分からんが。

というか、Executeは基本、UIスレッドからであればいつ呼ばれても大丈夫(実際に処理を実行するかは
別として)なように実装しないとまずいんじゃないの?
0314デフォルトの名無しさん2013/12/26(木) 22:24:54.70
CanExecuteはGUI様に簡易で用意されてる物
実際の実行可否は日帳に応じてExecute内でチェックするもの
0315デフォルトの名無しさん2013/12/26(木) 22:26:12.27
タイプボロボロ

CanExecuteはGUI用に簡易で用意されてる物
実際の実行可否は必要に応じてExecute内でチェックするもの
0316デフォルトの名無しさん2013/12/26(木) 22:27:38.08
非同期処理がガンガン書き換えるようなプロパティをバインドすんなが正解だろ
コードビハインドでCanExcecute云々と全く関係ない話
0317デフォルトの名無しさん2013/12/26(木) 22:28:12.75
>>310
マルチスレッドの各スレッドで同じExecuteを呼ぶのがそもそも間違ってると思う。
そのマルチスレッドそのものをラップしたExecuteを用意して、そのためのCanExecute、Commandを用意すべきでは?
0318デフォルトの名無しさん2013/12/26(木) 22:29:33.83
俺の移ったのかタイプがボロボロw

CanExecuteなんてどれを参照してるかわからないのにどれをロックするんだ?
だからマルチスレッドプログラムをやったことないんだろと言った
0319デフォルトの名無しさん2013/12/26(木) 22:30:56.98
CanExecuteなんて1秒間も何度も呼ばれてるのにExecute実行まで何をロックするんだ?
答えてみ?
0320デフォルトの名無しさん2013/12/26(木) 22:31:03.93
STAThread属性なUIスレッドは逐次処理だっての
0321デフォルトの名無しさん2013/12/26(木) 22:35:16.30
Icommand自体はWPFのバインドとは何のかかわりもない

CanExecuteが何を元に判定しているかなんてWPFは知らない

しょうがないから適当なタイミングでWPFがCanExecute呼んで画面に反映してるだけるだけ
何度呼ばれているかカウントして表示してみたらいい
知らん奴は驚く
0322デフォルトの名無しさん2013/12/26(木) 22:37:29.51
的外れな内容でコーディングするよりコマンド使わないほうがいい
0323デフォルトの名無しさん2013/12/26(木) 22:39:23.85
こいつUIスレッドが複数あるとでも思ってるのか
0324デフォルトの名無しさん2013/12/26(木) 22:42:00.80
いつになったらUIスレッドと無関係だと理解するんだ?

CanExecuteで判断する内容はMに依存していたとして
コマンドからはMの更新を知ることができない

だからWPFはInotify使えないで地味にCanExecuteを適当に実行してる
0325デフォルトの名無しさん2013/12/26(木) 22:43:59.93
ワーカースレッドが裏でプロパティ書き換えない限り不都合なんてないだろ
0326デフォルトの名無しさん2013/12/26(木) 23:16:42.43
ワーカースレッドでCanExecuteが変更されるなら、
CanExecuteChangedもワーカースレッドで呼び出されなければならない。

だが、UIスレッド以外からCanExecuteChangedを呼んで良い、という仕様は文章化されていない。

よって、この動作は不正。
CanExecuteの変更をUIスレッドにマーシャリングしてやる必要がある。

何が言いたいかっていうと、マルチスレッドkが〜とか言ってる奴が
一番マルチスレッドを理解していないって事だ。
0327デフォルトの名無しさん2013/12/26(木) 23:24:55.85
低レベル過ぎて泣ける
相手にして損した

ugayaでもかずきでも好きな奴に相手してもらえ
鼻で笑われるだけ
0328デフォルトの名無しさん2013/12/26(木) 23:27:20.07
> コマンドからはMの更新を知ることができない
知ることはできない、じゃねーよ。
お前が更新を通知する実装をさぼってるだけだろ。

可能なら通知を実装する、
通知がどうしても不可能なら、
CanExecuteは常にtrueにしておき、
Executeでは何も実行しないこともありうる、って仕様にすべき。
0329デフォルトの名無しさん2013/12/26(木) 23:28:31.35
かずきはともかく、ugayaとかスレッドがわかってるつもりで
全然わかってない奴の代表格じゃねーか。
0330デフォルトの名無しさん2013/12/26(木) 23:47:15.40
>>328
つか、ControlTemplateでしっかりグレーにするのが面倒になって、ついそういう仕様にしたりする
0331デフォルトの名無しさん2013/12/26(木) 23:53:26.46
見た目の事?

だったら、無効状態だと透明度を0.4位にするってのが簡単なのでよく使ってる。
0332デフォルトの名無しさん2013/12/27(金) 00:00:08.19
最近はどうでもよくなってUIのロックしなくなった
0333デフォルトの名無しさん2013/12/27(金) 00:00:45.35
>>331
おお、そんなてぬ×素晴らしい方法があるとは
使わさせてもらいます
0334デフォルトの名無しさん2013/12/27(金) 00:01:29.02
てぬ×って何!?
0335デフォルトの名無しさん2013/12/27(金) 00:02:12.97
手抜き
0336デフォルトの名無しさん2013/12/27(金) 00:11:32.61
無効にするんじゃなくて、○○という理由で処理を実行できません、ってメッセージを出す方が親切だよね
0337デフォルトの名無しさん2013/12/27(金) 00:57:31.84
>>336
手抜きに独された意見かもしれないけど
ユーザーは半透明は使えないって学習してくれる
見て無効かわかるし見えないよりは親切だと思う
0338デフォルトの名無しさん2013/12/27(金) 01:00:35.85
てぬx誕生の瞬間を見た。
0339デフォルトの名無しさん2013/12/27(金) 04:39:41.44
手で抜いてもらうことか
0340デフォルトの名無しさん2013/12/27(金) 04:44:15.78
流行らないし流行らせない
0341デフォルトの名無しさん2013/12/28(土) 07:23:34.04
XAML/WPF悪く無いとは思うんだけどねぇ…
なんかスタイルが気に入らんのだなぁ…
かといってWinFormsのバインディングも糞だし…

結局どっちがいいの?
0342デフォルトの名無しさん2013/12/28(土) 09:24:24.36
急にLivetつかったWindowがエラー出るようになったんだけど原因分かりませんか。
メインWindowは正常に表示されるが、他のWindowを表示しようとすると例外が発生します。(デザイン時は問題ない)

メッセージ:
型 'LivetCallMethodAction' のインスタンスを型 'TriggerActionCollection' のコレクションに追加することはできません。型 'T' の項目のみが許可されます。

スタックトレース:
場所 System.Windows.FreezableCollection`1.Cast(Object value)
場所 System.Windows.FreezableCollection`1.System.Collections.IList.Add(Object value)
場所 System.Xaml.Schema.XamlTypeInvoker.AddToCollection(Object instance, Object item)
場所 MS.Internal.Xaml.Runtime.ClrObjectRuntime.Add(Object collection, XamlType collectionType, Object value, XamlType valueXamlType)
03433422013/12/28(土) 12:17:57.80
理由はよく分からないけど原因のコードは分かった
Livetを参照しているdllをAssembly.LoadFrom()で読んでると
Livetを利用している他のWindowを表示すると例外が発生する
何これ
0344デフォルトの名無しさん2013/12/28(土) 12:34:20.19
複数のLivetが混ざってるんじゃないの
DLL1とDLL2の両方で別々にLivetのソースを含めたりしてないか?
もしそうならLivetを除去してLivetだけ別のDLLとしてコンパイルしてそれを参照する
っていうかLivetなんか使うな
0345デフォルトの名無しさん2013/12/28(土) 13:05:34.61
そもそも尾上のLivetが絶賛される出来ならM$がヘッドハントするだろ
ソーシャルゲーなんて作ってる会社にいるってことはまぁそういうことだろ
03463422013/12/28(土) 13:07:41.04
>>344
あー。
そうみたいです。
loadするdllは別フォルダにあって、そこにもlivet.dllがあったのが問題でした。
つかっちゃだめですか。
お騒がせしました。
0347デフォルトの名無しさん2013/12/28(土) 13:08:41.69
linuxを作ったライナスは今どこの会社にいるんだっけ?
0348デフォルトの名無しさん2013/12/28(土) 13:11:07.52
敷居の高さからかそもそも話題が少ない中で
広報活動してくれた子らが注目を集めちゃっただけ
0349デフォルトの名無しさん2013/12/28(土) 14:17:11.22
なんか過去ログ見ると1年以上前から尾上に粘着してるのが何人かいるみたいだけど、
こういう奴って自分が他人からどう見えるのか想像できないのかね。

馬鹿じゃなかろうかと思うんだが。
0350デフォルトの名無しさん2013/12/28(土) 14:25:36.99
想像できないからやってるんだろうと想像できない人もレベルとしては大差あらへんよ
0351デフォルトの名無しさん2013/12/28(土) 14:29:41.48
想像できないからやってるんだろうと想像できないのではなく、
皮肉を言っているんだよ。通じなかったかな?

皮肉を理解するには高度な知的水準が必要だというし、仕方ないか。
0352デフォルトの名無しさん2013/12/28(土) 14:34:09.91
Livetみたいなのって分かってる人が下の何も分かってない連中に使わせるもんで、
分からなかったら分かってる人にすぐ聞ける環境でないと意味ないんだよな
外野がソースだけ持ってきて>>344みたいに問題解決しながら使えるんなら
そもそも別に必要ない
0353デフォルトの名無しさん2013/12/28(土) 14:34:11.19
お前349と別人だろ
似てない
釣りならもっと上手くやろうや
0354デフォルトの名無しさん2013/12/28(土) 16:01:15.78
少なくともGoogleやM$でバリバリ開発してる人はこのスレにこないことは確かだな
0355デフォルトの名無しさん2013/12/28(土) 20:34:08.83
MSはともかくとして、
GoogleってそもそもWPF使ってる製品あんの?
0356デフォルトの名無しさん2013/12/30(月) 09:35:41.22
xamlでのレイアウトについて質問です。
今、<StackPanel></StackPanel>の中に、
<Grid></Grid>を4つ配置しています。

各Gridは Hright = Auto、 VerticalAlignment = Stretch
としているのですが、
一番下(4つ目)のGridの高さをStackPanelの下いっぱいまで
の高さにしたいです。
AA崩れるかもしれませんが、以下のようにしたいです。

|StackPanel-------------┐
| ┌Grid1 -------------┐|
| └------------------┘|
| ┌Grid2 -------------┐|
| └------------------┘|
| ┌Grid3 -------------┐|
| └------------------┘|
| ┌Grid4 -------------┐|
| | | |
| | | |
| | | |
| | | |
| | | |
| └------------------┘|
└--------------------┘

また、Grid1〜3はVisibilityをCollapsedにする
ことも考えており、その場合でもGrid4はStackPanelの
高さいっぱいまで伸びて欲しいです。
どう記述すれば良いでしょうか?よろしくお願いします。
0357デフォルトの名無しさん2013/12/30(月) 09:37:36.75
DockPanelかGridでやれ
0358デフォルトの名無しさん2013/12/30(月) 10:39:15.45
>>356
なんでStackPanelでやんのよ
0359デフォルトの名無しさん2013/12/30(月) 11:00:08.94
試したけどこんな感じで行けると思う
dock
 stack top
  grid
  grid
 grid bottom
0360デフォルトの名無しさん2013/12/30(月) 11:37:15.96
>>359
stack要らないと思うよ
0361デフォルトの名無しさん2013/12/30(月) 11:44:00.17
あとBottomもいらん
0362デフォルトの名無しさん2013/12/30(月) 11:46:26.29
追加削除変更が楽だから使ってんだと思って残した
数量固定なら言われてるとおりイラン
03633562013/12/30(月) 11:51:30.07
>>357-361
ありがとうございます。
例えばGrid2をCollapseにしたときに
Grid1のすぐ下にGrid3が来るように
(Grid2以降の位置が上にずれる)
する方法を調べたらStackPanelを使う方法が
見つかったので、それで実装しようと
頑張っていました。

今は出先なので、帰宅してから
DockPanelで調べ直してみます。
ありがとうございました。
03643562013/12/30(月) 11:52:27.03
>>362
意図を汲み取っていただきありがとうございます。
提示していただいたやり方でやってみます。
0365デフォルトの名無しさん2013/12/30(月) 12:00:33.81
考えてみたら一般的な使い方だと上手くいかない
撤回する
0366デフォルトの名無しさん2013/12/30(月) 15:24:59.60
そういやRowDefinitionのHeightをVMから弄ったらうまく動かなかったんだが
同じコードをコードビハインドから動かしたら正常動作した
アレは何だったんだろうな?
03673562013/12/30(月) 17:22:43.03
DockPanelとGridのみで出来ました。
ありがとうございます。
0368デフォルトの名無しさん2014/01/03(金) 21:28:41.04
Resoures.resxで文字列リソース
TEXT_A = "項目"
TEXT_B = ":"

というリソースを定義しているのですが、
TEXT_C を定義するときに
TEXT_AとTEXT_Bを参照することは可能でしょうか?

やりたいこととしては、
xamlで
<Label Content="{Binding Source={StaticResource resources}, Path=TEXT_C" />
と書きたいです。

C#のコードでTEXT_A + TEXT_B を設定することも出来ますが、
xamlで一発で書けたら良いと思っています。
よろしくお願いします。
0369デフォルトの名無しさん2014/01/03(金) 21:36:27.70
Binding.StringFormatでいいんじゃね
0370デフォルトの名無しさん2014/01/03(金) 21:38:55.33
単純に2つTextBlockを並べたらいい
Labelが使いたいんならLabel-StackPanel(Horizontal)-TextBlock×2
03713682014/01/03(金) 21:50:05.95
>>369-370
ありがとうございます。
まだまだ偏った考えしかできていなかったようです。
非常に勉強になりました。

(今回は>>370さんの方法で書きました)
0372デフォルトの名無しさん2014/01/04(土) 02:59:15.59
そんなことで良かったんかいw
リソースに設定するくらいだから複数個所から使いまわすのかと思った
0373デフォルトの名無しさん2014/01/04(土) 07:53:45.69
TEXT_AとBは複数箇所で使い回しているのですが
その流れでCもリソース化しようとしていました。
0374デフォルトの名無しさん2014/01/06(月) 05:41:01.64
そもそも文字列をリソースにしてそこにバインドする必要あるの?
VMに文字列型のプロパティ持たせてそこにバインドする方がよほど簡単だと思うけど
0375デフォルトの名無しさん2014/01/06(月) 21:42:08.37
いい加減Xaml捨ててHTML5にするか別のInterface Builder作って欲しいなー
XMLってのが筋悪いんだよな、何故XHTMLが人気でないでHTML5が人気出たかって簡潔で扱い易いからだよ
SGMLをスーパーセットに派生してもXMLやXHTMLはDTDが厳格すぎんだよね、ぶっちゃけ非常に扱い辛い
Xamlも扱いが非常に面倒くさい、未だにWinFormsの人気が衰えないのは化石PGが○○とか関係ないよ
0376デフォルトの名無しさん2014/01/07(火) 00:09:56.64
というよりも投資する価値に懐疑的というか。
MSもSurfaceだったり電話だったりでプラットフォーム広げるのに頑張ってはいるんだが…
0377デフォルトの名無しさん2014/01/07(火) 00:16:25.43
ぶっちゃけwinformである程度のことができるからな
新しいものに移行する必要がまったくないんだわ
OS側でサポートしなくならない限り亡くならないよ
0378デフォルトの名無しさん2014/01/07(火) 00:30:24.52
wpfでも、winformでできることをやるなら大して面倒でもないしややこしくもない
挫折しそうな人は、グリッドやパネルのレイアウトだけ勉強して、イベントドリブンで組めばいいのにな
0379デフォルトの名無しさん2014/01/07(火) 01:06:50.63
MVVMもイベントドリブンです
0380デフォルトの名無しさん2014/01/07(火) 19:28:33.63
データドリブンじゃなかったの?
0381デフォルトの名無しさん2014/01/07(火) 23:17:08.16
ユーザーの入力はコマンドだから実質イベントだし
モデルからMVVMへの通知もイベントで受けるんだから
一般的にイベントドリブン型と呼ばれる所以の部分はMVVMだからって特に変わりはないよ
MSが宣伝文句としてたまに使ってるデータドリブンってのはデータが中心のアプリという程度の意味で
イベントドリブンと対立するものじゃない
0382デフォルトの名無しさん2014/01/08(水) 04:29:06.95
そもそもイベントドリブンって対話的プログラムって意味だろ
だったら現代のプログラムでイベントドリブンじゃないモノなんて存在しないだろ
0383デフォルトの名無しさん2014/01/08(水) 04:35:19.53
そのHTML5にしてもデザインやレイアウトはCSSに完全に依存
ドメインロジックやアニメーション等の動的な要素はDOMやJavaScriptに完全に依存
実際にマークアップは要素や属性の定義だけの最小限だしね
その点XAMLは可読性の著しく低いマークアップでずらずら定義されるから筋悪いってのは同意
XMLとJSON比較してもJSONが人気なのは簡単で書き易いからだろうし
0384デフォルトの名無しさん2014/01/08(水) 04:40:33.44
378かが言いたいのは、VMとか用意せずにVだけで
<Button Click="○○"> みたいな感じで
Vのコードビハインドで直接処理書いちゃうみたいなので
全部済ませちまえってことだろ
それだとWPF使う意味あまりないけどw
0385デフォルトの名無しさん2014/01/08(水) 05:01:00.08
意味ないっていうか絶対にフィージビリティは低いよね
0386デフォルトの名無しさん2014/01/08(水) 10:10:11.11
>>383
そこまでXAMLのアニメーションとか筋悪いかね。
コードビハインド一切不許可だとどうかとかは思うけど適度に織り交ぜていいならロジックも結構宣言的にかけていいと思うんだがなぁ
といっても綺麗にかけるようになるまでの敷居がはるかに高いのは否定しないけど。自分も未だによく分からん(´・ω・`) 
0387デフォルトの名無しさん2014/01/08(水) 11:35:38.97
MVVMの有用性をWPFの利点として挙げるとして、
そもそもMVVMを実現する為にPrismやLivet等のフレームワークがほぼ必須な時点でおかしな話。
0388デフォルトの名無しさん2014/01/08(水) 11:59:21.47
誰も有用性なんか言ってなくね…?w
便宜上V、VMとかいう単語は出てるけど、ただのデータソースとxaml だと思えばいい。
良いとこは使えばいい的な。
0389デフォルトの名無しさん2014/01/08(水) 12:35:49.98
最近WPFの勉強を始めたんだけど、
例えば数万件のPointデータを元に絵を描画する場合でも
データバインディングを使ったほうがいいの?

まだデータバインディングってのがよく分かってなくて、
XAMLで記述するってのがすごい違和感あるんだけど。
0390デフォルトの名無しさん2014/01/08(水) 12:50:04.69
office の差し込み印刷みたいなもんだと思えばいいw
マーキングしてある部分に値が自動的に突っ込まれる。基本はそんだけ。
まぁ処理もバインドできるけどな。値の整形とかも。

つーか、一通り勉強した方がいい。依存関係プロパティとは!?レベルから
0391デフォルトの名無しさん2014/01/08(水) 13:13:14.01
>>389
残念ならが、数万件のデータを扱えるほどWPFの性能は良くない。

最低でも、バックグラウンドでレンダリングし、レンダリング済みの画像を
Bindingするデータとする必要がある。

リアルタイムで更新したいと思ったら、Bindingを使用しない生のWPFでも不十分で
DirectXと連携する必要がある。
0392デフォルトの名無しさん2014/01/08(水) 16:22:21.73
昔なんかの記事でWPFアプリケーションは高DPIに完全に対応してるから拡大鏡で見るとフォントが最適なスケールでレンダリングされるとかあってへーと思った記憶があるんだけど
今Windows8.1で試してみたらレンダリング済みのフォントを拡大したようにしか見えないんだけどどういうこと?
0393デフォルトの名無しさん2014/01/08(水) 17:25:06.16
TextOptions, RenderOptions, UseLayoutRounding
あたりをいじった上で最適に見えないなら
Windowsのアンチエイリアスがしょぼいってことだろうな
0394デフォルトの名無しさん2014/01/08(水) 19:56:27.58
なんか8から8.1にしたら(恐らく誤動作で)ボケて表示されちゃうアプリが増えた気がする。
0395デフォルトの名無しさん2014/01/08(水) 20:46:31.96
8.1だとなぜだかボケる
0396デフォルトの名無しさん2014/01/08(水) 20:51:25.87
textboxがよくぼける
0397デフォルトの名無しさん2014/01/08(水) 21:15:02.14
・ 拡大鏡で綺麗にレンダリングされない(>>392)
・ Windows8.1でぼける (>>394)
・ TextBoxがぼける(>>396)
は全て別の原因によるものだよ

>>393>>396と少しだけかかわりがあるが、
>>392>>394には全く関係がない
0398デフォルトの名無しさん2014/01/08(水) 22:43:58.62
htmlがアプリケーションのプレゼンテーション言語として優れてるとは到底思えない
0399デフォルトの名無しさん2014/01/08(水) 22:53:29.38
HTMLが劣ってるんじゃない
処理系がクソなんだ
0400デフォルトの名無しさん2014/01/08(水) 23:30:18.70
>>398
別の用途のものをゴニョゴニョ拡張していまにいたってるしね。
0401デフォルトの名無しさん2014/01/09(木) 09:05:51.49
Internetとデスクトップの統合!( ・`ω・´)キリッ
0402デフォルトの名無しさん2014/01/09(木) 11:10:08.27
HTMLは良い
CSS差し替えだけでレイアウトが大幅に変わる

XAMLはそうもいかない
0403デフォルトの名無しさん2014/01/09(木) 11:31:54.43
WPFはPresentationって名前が示す通りビューのフレームワークだからそこで大きなレイアウト変更を吸収する必要性がない
まあリソース使えばなんとでもなるけど
0404デフォルトの名無しさん2014/01/09(木) 12:59:36.47
>>403
意味分からん。
>>402
自分も要素の定義とレイアウト、見た目は分離してた方が良かったんじゃと思う。より分離できるし。
まぁロジック的な要素もあるから難しいかなー
0405デフォルトの名無しさん2014/01/09(木) 13:16:48.66
HTML+CSSって言うけどレイアウト計算の絡むところは全部JavaScriptにやらせるんでしょ?
0406デフォルトの名無しさん2014/01/09(木) 13:21:53.63
WPFの勉強が嫌になってきた。
WinFormとC#で書けばやれることを何でわざわざXAMLで書かないといけないんだ?
0407デフォルトの名無しさん2014/01/09(木) 13:28:16.97
WinFormで出来ないことをやるための練習
0408デフォルトの名無しさん2014/01/09(木) 13:30:57.79
>>406
まぁMSはこれから全部XAMLになるだろうしねぇ
0409デフォルトの名無しさん2014/01/09(木) 13:43:38.15
WPFで作ってるけどXAMLは数行しか書いてない
0410デフォルトの名無しさん2014/01/09(木) 13:47:04.84
WinFormのListViewがバインディングできてればWPFというかXAML系に手を出さなかったかもしれん
0411デフォルトの名無しさん2014/01/09(木) 14:20:14.47
Formに出戻りしてListView仮想モードにしてDrawItemイベント時に
ドット区切りのバインディング取ってくるようにしたわ
昔はCollectionをDataTableに変換してた
0412デフォルトの名無しさん2014/01/09(木) 20:45:05.57
>>408
MS自身がWPF使うときってWPFの原型を留めてないくらいにがっつり独自フレームワーク使うからなあ
というよりWPF自体どっちかというとそういう大袈裟な使い方をするように設計されていて、
GUIのしょぼい業務アプリの類はさっさとHTMLに移行してほしいんだろうな
0413デフォルトの名無しさん2014/01/09(木) 23:51:35.32
低レベルな部分の仕組みは結構イケてるんだよね。
高レベルな部分の作りこみは全然ダメだけど。

高レベルな部分を丁寧な独自実装で置き換えると、
悪い評判だらけのWPFとは思えないような、軽快かつ見栄えの良いアプリも作れる。

手間がかかりすぎるので、使える場面は限られるけど・・・。
0414デフォルトの名無しさん2014/01/10(金) 00:00:24.32
VisualStudioはWPF製だけど、WPFの悪い部分がしっかり改善されてるんだよな。

メニューの挙動のおかしな点もないし、
TreeViewのデザインもかっこいいし。
GridViewもWPF標準の物の違ってまとも。

WPF標準のコントロールもこれくらい品質が良ければ良かったんだが。
0415デフォルトの名無しさん2014/01/10(金) 00:15:38.93
>>401
そういえば、エクスプローラのUIをブラウザと統合して糞使いにくくなったのはどうにかならんかなぁ。
XPまではまだ旧来のUIで使えていたが、7になってどうにもならなくなった。
0416デフォルトの名無しさん2014/01/10(金) 00:19:26.23
いや今のエクスプローラはIEコンポなんか使ってないだろ
ボタンをリンクっぽく描画してたりするだけで普通のWinネイティブなアプリだよ
0417デフォルトの名無しさん2014/01/10(金) 00:44:15.71
>>415
今そんな使いにくいところあったっけ?
普通のエクスプローラとしてしか使ってへんわ
0418デフォルトの名無しさん2014/01/10(金) 00:52:47.28
IE5までの話だねw
しかもWin9x限定w
どこの浦島太郎だよって
0419デフォルトの名無しさん2014/01/10(金) 01:19:00.81
>>417
エクスプローラのウィンドウとフォルダの対応関係が切られて、位置やサイズなどを
覚えてくれなくなったのがかなり不便。
Windows3.1あたりのファイルマネージャに先祖返りしたのかも知れんが。
0420デフォルトの名無しさん2014/01/10(金) 02:33:35.57
>>419
どういう風に覚えてたのか忘れちゃった。すまそ(´・ω・`)
前ほどイミフな自動カラム選択とかフォルダによってビューが変わるってのなくなった?
前より使いやすい気がしてる。
0421デフォルトの名無しさん2014/01/10(金) 04:04:18.77
右側でフォルダ展開すると、左のツリーのアクティブフォルダが
必ず下側の固定位置にいちいちスクロールするのが気に入らん…
下領域空いててスクロールの必要が無いにも関わらずだ。7からなんだが
0422デフォルトの名無しさん2014/01/10(金) 08:35:16.69
>>420
画像フォルダとか音楽フォルダとか勝手にフォルダの種類を判断するやつかな?
あれ、よく判断を間違えるし設定を変更しても忘れてくれるし、確かに意味不明だな。
0423デフォルトの名無しさん2014/01/10(金) 15:58:25.77
サブフォルダーを開いても、ツリービューが追従しなくなったのはどんな理由なんだろうな
使いにくいんですが
0424デフォルトの名無しさん2014/01/10(金) 16:00:53.67
それは設定で変えられる
フォルダオプションのナビゲーションウィンドウ>自動的に現在のフォルダまで展開
デフォルトを変更した理由は分からん
ライブラリみたいな仮想フォルダとの兼ね合いかね
0425デフォルトの名無しさん2014/01/10(金) 20:34:24.47
仮想フォルダよりNASとの兼ね合いかなとも思う
0426デフォルトの名無しさん2014/01/10(金) 20:49:44.10
そんなの関係ないでしょ。
恐らくMSなりにライトユーザーに媚びたつもりなんだろうと思うよ。

たぶん調査の結果、ほとんどのユーザーはフォルダツリーをツリーとしてではなく、
ドライブや仮想フォルダへのショートカットとして使っている、みたいなことになったんでしょ。

で、フォルダを階層を展開しちゃうとその「ショートカット」がクリックしづらくなる、みたいな。

田ミ + E でエクスプローラを表示した時にフォルダツリーにフォーカスが当たってないのもそういう流れだと思う。
使いづらくてしょうがないけど。
0427デフォルトの名無しさん2014/01/11(土) 02:50:05.98
>>422
レジストリで無効にすると勝手に違う種類に変わったりしなくて快適だよ。
0428デフォルトの名無しさん2014/01/11(土) 14:31:47.69
>>418
Win9x限定じゃねーぞ

Win2kもXPもエンジンはIE
XPからはカスタマイズができなくなったというだけ(folder.httは使える)

Vistaから完全独自になって
7からはリストビューすらコモンコントロールじゃなくなった
0429デフォルトの名無しさん2014/01/11(土) 23:08:55.26
C#スレに質問したのですが、
良く考えたらWPFの話なので、こちらで質問させて下さい。

ボタンコントロールが2つと
A.jpg,B.jpg,C.jpgという画像があるとして、
ボタン1にデフォルトでA.jpgを表示し、
ボタン1がクリックされている間はB.jpgを表示し、
ボタン2が押された時に、コードで
ボタンの画像をC.jpgに切り替えたいのですが、
どのように実現するのか、皆目見当が付きません。

言語はC#でもVB.NETでも構いません。

詳しい方、何卒よろしくお願いします。
0430デフォルトの名無しさん2014/01/11(土) 23:14:05.60
xamlでtriggerを使う
0431デフォルトの名無しさん2014/01/11(土) 23:50:22.83
ザッツオール
0432デフォルトの名無しさん2014/01/12(日) 17:21:21.02
トグルボタンってなかったっけ…
0433デフォルトの名無しさん2014/01/12(日) 21:19:57.46
>xamlでtriggerを使う
ご回答ありがとうございます!
triggerというワードで調べて、下記のようなコードで
通常1.png クリック時に2.pngまではできたのですが、
これを分離コード側で3.pngにする方法が解りません。
詳しい方、何卒お教え下さい。

<Button Margin="26,57,0,0" Name="button1" Height="36" VerticalAlignment="Top" HorizontalAlignment="Left" Width="117">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border Name="border" BorderThickness="0" BorderBrush="Transparent">
<Border.Background>
<ImageBrush ImageSource="1.png" />
</Border.Background>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="2.png" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
0434デフォルトの名無しさん2014/01/12(日) 22:06:29.14
ImageBrushに名前を付けたら、分離コードでいじり放題
0435デフォルトの名無しさん2014/01/12(日) 23:00:45.47
>ImageBrushに名前を付けたら、分離コードでいじり放題
ご回答ありがとうございます!
ただ、試してみても、画像が3.pngに切り替わらずダメでした。

下記のようなコードを書いたのですが。。。

BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri("3.png");
image.EndInit();
button1.Background = new ImageBrush(image);

WPFは、Windowsフォームアプリ感覚でやると、
なかなか難しいなと思いました。。。
0436デフォルトの名無しさん2014/01/12(日) 23:32:51.55
>>435
その書き方ならborderのBackgroundを{TemplateBinding Background}にして、
ButtonのBackgroundに1.pngのImageBrushを指定すればいけるような気がするけどどうだろう?

ちなみにそのやり方だとマウスオーバー時に色がかわる、とかフォーカス時に点線が表示される、とか、
元々ある機能がなくなってると思うんだけど、それは構わないの?
0437デフォルトの名無しさん2014/01/13(月) 05:15:05.21
>WPFは、Windowsフォームアプリ感覚でやると、

これがそもそも難しくしてる原因だ
0438デフォルトの名無しさん2014/01/13(月) 14:11:53.35
いやいや、やろうと思えば基本的にほとんどWindows Formsと同じ感覚でも書けるでしょ。
レイアウトとグラフィック以外は。

アニメーションはFormにないし
0439デフォルトの名無しさん2014/01/13(月) 18:51:14.44
MVVM試行錯誤しながらやってるんだけど、これうまく作るとビューの見た目やコマンドを実行する場所をいろいろと好き勝手にできて良いね。
フレームワーク使わずBindableBaseだけショボイの作ってやってるけど。
ItemClickをコマンドにどう結びつけたらいいんだとかわからんところも多々あるけど、適度にコードビハインド織り交ぜても十分フォームより色々疎結合できて良い。
0440デフォルトの名無しさん2014/01/13(月) 20:32:32.83
大きなアプリ作るならコンバーターやコマンドは避けたほうがいい
0441デフォルトの名無しさん2014/01/13(月) 20:34:56.21
TreeViewのContextMenuのIsOpenをBindingすると、必ず起動一発目の右クリックでメニュー出すと直ぐ消えるってのはなんだろうね
対策あったら教えて下さい
0442デフォルトの名無しさん2014/01/13(月) 21:08:11.18
>>440
それはどのへんで?
0443デフォルトの名無しさん2014/01/13(月) 21:14:57.92
MVVMのコマンドは拡張性がないからなあ
大きなアプリだとコマンドパターンでコマンドのクラス自体に処理を書いた方がいい
0444デフォルトの名無しさん2014/01/13(月) 22:14:08.74
Converterは必要があれば積極的に利用した方がいい。
プリミティブな1データを多様に表現、活用する事ができる。アプリの大小は関係ない。
ただMultiConverterのConvertBackは使いにくい。
0445デフォルトの名無しさん2014/01/13(月) 23:13:59.40
>>443
例えばprismでも使えばいいじゃん
0446デフォルトの名無しさん2014/01/13(月) 23:29:55.84
>>445
Prismはそのへん考慮してないよ
Webと変わらんような業務アプリのサンプルだからね
0447デフォルトの名無しさん2014/01/14(火) 02:33:12.59
コマンドは使いにくいなーとは思うけど、コンバーターは結構便利に使ってる
0448デフォルトの名無しさん2014/01/14(火) 03:22:34.62
コマンドよりビヘイビア書かないとバインド出来ないプロバティーが嫌だ
0449デフォルトの名無しさん2014/01/14(火) 04:05:04.81
ビヘイビアが未だによくわからん。使い所とか。
0450デフォルトの名無しさん2014/01/14(火) 10:52:12.79
別々の条件から同じことしたい時はトリガーとアクションに分けて、
常に同じ組み合わせならビヘイビアって感じでいいと思う
0451デフォルトの名無しさん2014/01/14(火) 10:59:23.43
ガン・・・、エクセルでたとえてくれ
0452デフォルトの名無しさん2014/01/14(火) 11:29:25.39
>>450
この辺ストアだとまた違うからな…今全部できるようになったんだっけ?
揃えてくれよママン…
0453デフォルトの名無しさん2014/01/14(火) 21:37:46.94
>xamlでtriggerを使う

で詰まっていた者ですが、おかげさまで
実装方法が解りました。

WPFは、使いこなせたら、
確かにフォームアプリより便利そうですね。

勉強になりました。
0454デフォルトの名無しさん2014/01/15(水) 13:57:25.53
ストアアプリを開発しています。

Bindingで、

 "文字列A" + 項目Aの設定値 + "文字列B"

  (※文字列は、ローカライズ対応)

をTextBlockに表示したいと考えています。
調べてみてもどの様にしたらよいものか困っています。
助けていただければ幸いです。
0455デフォルトの名無しさん2014/01/15(水) 13:59:51.17
>>368-371
0456デフォルトの名無しさん2014/01/15(水) 14:45:11.69
>>455 以外にも Run を使った方法もあるよ
<TextBlock><Run Text={Binding 文字列A} /><Run Text={Binding 項目Aの設定値} /><Run Text={Binding 文字列B} /></TextBlock>
0457デフォルトの名無しさん2014/01/15(水) 14:52:02.24
そういえば.NET 3.0の頃はRun::Textが依存関係プロパティじゃなかったなぁ 狂気の沙汰
0458デフォルトの名無しさん2014/01/15(水) 15:32:39.66
Blockの中にRunがあるんだからそれにバインドする方が変
特別なことをしないならStringFormatがまともな手段だけど別のフレームワークで
無くなったり意味不明
0459デフォルトの名無しさん2014/01/15(水) 15:39:58.05
変かな?
数値部分だけ色変えたいとかさ
04604542014/01/15(水) 17:05:53.82
ありがとうございます。
>>456の方法で行けそうなんですが、ローカライズの文字列では表示されません。
デフォルトで与えた文字であれば、表示されます。
もう少し格闘してみます。

>>368-371 の方法も考えましたが、ローカライズで文字列の長さが変わった時に
調整がメンドウなので…。
(うまい方法があるのかもしれませんが、稚拙なものでスミマセン。)
0461デフォルトの名無しさん2014/01/15(水) 19:54:47.63
>>460
ローカライズってどういう風にやってるの?
Bindingでやろうとしてるってことは動的に変更される文字列を表示しようとしてる?
ロケールによってBinding先を切り替えるとか?

ちなみにストアアプリは専用スレあるよ?
0462デフォルトの名無しさん2014/01/15(水) 22:47:12.42
どういう風にってResourcesを言語別に用意以外に
方法あったっけ?
0463デフォルトの名無しさん2014/01/15(水) 23:04:03.19
>>462
普通のやり方ならuidで指定するからBindingなんかしないし、
ローカライズされた文字列が表示されないなんてことにはならないでしょ?
0464デフォルトの名無しさん2014/01/15(水) 23:34:13.53
そうか?
俺は普通に以下のように書いてるけどな。
<Label Content="{Binding Source={StaticResource resources}, Path=hogehoge}" />

表示されないってのは分からんけど。
0465デフォルトの名無しさん2014/01/16(木) 00:26:58.66
WPFでDataGridにバインドさせて使うときって列の定義とかはどうしてる?
0466デフォルトの名無しさん2014/01/16(木) 01:10:36.73
普通にXAMLで
というかデータグリッドはWinFormsのを使ってる
WPFでやるんならデータグリッド貼って終わりなんて安易なクソUIやめてListViewで作れよ
0467デフォルトの名無しさん2014/01/16(木) 03:55:51.77
>>464
hoge厨らしい書き方だな
電子ゴミ作って楽しいか?
0468デフォルトの名無しさん2014/01/16(木) 08:43:52.17
>>467
おはよう
0469デフォルトの名無しさん2014/01/16(木) 08:55:00.32
腰痛めて病院いったらウォーターベッドみたいなんに寝かされた。
振動で腰を直すやつな。
振動の強さが「強」「中」「弱」の三種類あって、
最初に「弱」で始まったんだけど全然振動が伝わってこない。

看護婦さんに「あの、全然感じないんですけど」って言ったら
「じゃあ「中」にしときますね。何かあったらナースコール使って呼んでください。」
って言われて「中」に切り替えて看護婦さんどっか行った。
しばらく待ったけど全然振動しなくって ナースコールで看護婦さん呼んだら
「じゃあ、「強」にします。」 って言われて「強」に切り替えた。

それでも全然動かなくておかしいなあとか思いつつふっと横を見たら
隣に寝てたよぼよぼの爺さんがガタガタガタガタ猛烈に振動してた
0470デフォルトの名無しさん2014/01/16(木) 13:40:54.62
WinFormsのコンポーネントをScrollViewerとかに埋め込んだ時クリッピングされないで
はみ出ちゃう問題マジで何とかならないのかなぁ・・・。
市販のコンポーネントなんてWinFormsばかりだからマジで困るぜ。
0471デフォルトの名無しさん2014/01/16(木) 14:32:42.96
無理だろうね。コンポーネントの方がWPFに対応するのを期待しよう。
0472デフォルトの名無しさん2014/01/16(木) 14:37:19.84
グレープシティやインフラジスティックスのWPFコンポーネント使えばいいんじゃね?
0473デフォルトの名無しさん2014/01/16(木) 15:09:13.57
>>471
だよねぇ・・・。最初からこのコンポーネント使う事決まっていれば色々考えようもあったんだけどね。
まぁ、そもそもWPF選んだ時にこの不具合知らなかったんだけどorz

>>472
大人の事情で決まった会社の固有の製品なのでそういう代替え品ではダメなんだよ・・・
0474デフォルトの名無しさん2014/01/16(木) 15:30:25.65
>>473
大人の事情で決まった製品って大抵ろくなのないからなぁ
事情説明して何とかするよう努力するべし
0475デフォルトの名無しさん2014/01/16(木) 17:13:41.53
どうしてもそのコンポーネントを使わなきゃいけないのなら、
HWNDによるクリッピングを利用することは不可能ではないけどね。

独自パネルA (WPF) > 独自パネルB (WinForms) > コントロールC (大人の事情)

って構造にして、
BをScrollViewerの可視範囲内に配置し、
Cをクリッピングなしの範囲に配置することで
BのHWNDによるっクリッピングを有効にすることはできる。

スクロールする度に再レイアウトすることになるので、性能はお察しだけど。
0476デフォルトの名無しさん2014/01/16(木) 17:27:06.59
大人の事情ってどんな内容かな

勤め先がFとかNとかN(2回目)とかHだとか
0477デフォルトの名無しさん2014/01/16(木) 18:03:06.01
>>476
俺はFだけど、大人の事情がない会社なんてあんのか?
0478デフォルトの名無しさん2014/01/16(木) 18:23:48.62
大人の事情がない会社はない
ただしコンポーネントの選択に関しては、大人の事情など断固拒否しますよ
(経済的事情を除く)
0479デフォルトの名無しさん2014/01/16(木) 19:28:36.49
>>466
XAMLで列を定義ってなんか疎結合って感じがしなくなる
0480デフォルトの名無しさん2014/01/16(木) 21:09:13.14
>>479
意味不明
ビューが表示対象のデータ項目に依存しなくて一体何を表示するというのか
0481デフォルトの名無しさん2014/01/16(木) 21:38:51.21
>>477
Fか…
Fはjavaなどの社内フレームワークが何種類もあると噂に聞く…
0482デフォルトの名無しさん2014/01/16(木) 22:12:54.26
>>479
XAMLよりVMに書いたほうがいいと思う
グリッドで入力する場合は検証も行わないといけないしね
0483デフォルトの名無しさん2014/01/17(金) 01:44:48.28
>>475
あーあー、WinFormsを挟む発想は無かったわ。面白そうね。今度試してみよう。
結局見た目とイベントをバイパスするproxyみたいな物作ってしのいだわ。
思ったよりちゃんと動いているけど、あまり動き無い物だから出来る話だぁね・・・。
今更WinFormsなんぞ使いたくないし頑張りますヨ〜
0484デフォルトの名無しさん2014/01/23(木) 14:31:47.24
ここに質問する無いようなのかわからないけどWPFのプログラムでMEF使う時に
Importってどのタイミングで行われるか書かれている資料ってあるかな?
今はとりあえずLoadedのタイミング以降でImportしたオブジェクトにアクセスしてて
特に問題は無いけど何かモヤモヤするんだよなぁ・・・。
0485デフォルトの名無しさん2014/01/23(木) 15:39:16.50
WPFは関係ないし、MEFのドキュメントで自分が使ってるImport方法の説明を読めとしか。
0486デフォルトの名無しさん2014/01/23(木) 19:45:53.70
DIならAutofacでも使ったほうがいいよ
MEF使いづらい
0487デフォルトの名無しさん2014/01/23(木) 20:21:32.72
なんだとこのファック野郎
0488デフォルトの名無しさん2014/01/23(木) 22:02:28.47
もうMvvmCross使えよ(´・_・`)
0489デフォルトの名無しさん2014/01/23(木) 22:13:35.77
どうもこういうクロスプラットホームの奴って今までも色々あったけど
流行った試しないし眉唾なんだけどそんなに良いの?
そもそも共通プラットホームにしたい様なもの開発してないケドWPF的に
作りやすいとかあるなら考えてみても良いかなぁ。
0490デフォルトの名無しさん2014/01/23(木) 22:18:53.50
いや全然クロスプラットフォームじゃないぞ
Windows(x86)のVista以降でしか動かん
0491デフォルトの名無しさん2014/01/23(木) 22:32:38.14
それXamarinの話ではなくて?
まー、サポート切れるとはいえXPはまだ捨てられないしねぇ・・・。
俺的にはいらないけど商品開発の場合は捨てる選択肢まだ無理だわ。
0492デフォルトの名無しさん2014/01/23(木) 22:59:53.03
>>489
今見てる限りだとだいぶ現実的なアプローチだと思う。
物によるけど多分8ー9割のコードは共通化可能。
けど作りやすいか言われるとどうかなー。DIの仕組みとかあるけどこういう風に作れとか制限出てくるし。WPFだけでいいなら普通に作った方がいいかも。

>>490
今更XPか(´・_・`)

>>491
Xamarin専用じゃないよ。XamarinがiOSや泥でC#を使える下地を作ってくれたのでそれを利用してる感じ。MVVMでの開発をどのプラットフォームでもできるようにする基盤。
案件によってはまだXPに縛られるんかね…
0493デフォルトの名無しさん2014/01/23(木) 23:02:09.10
>>490
win、wp、その他linux,mac,ios,android(xamarin)ってことじゃね?
最初の2つ以外はxaml無関係だけど。
向き不向きは詳しい人に任せる。
0494デフォルトの名無しさん2014/01/23(木) 23:03:35.29
>>492
80-90って、えらいUI少ないね。それで済むものには向いてるかもね。
0495デフォルトの名無しさん2014/01/23(木) 23:20:41.65
>>494
UIもVMまで共通化したらそれぐらいにならん?
まぁものによると思うけど。
0496デフォルトの名無しさん2014/01/24(金) 02:10:13.53
実際VM共通化なんぞ出来るんか?結局Viewだけ差し替えるとか幻想でしょ・・・
0497デフォルトの名無しさん2014/01/24(金) 02:28:14.65
VMはV依存度は高いもんなぁ。このV用の特別なナニカってのは必ず出るだろうし、
無理に共通化しても見通し悪くなりそうだ
0498デフォルトの名無しさん2014/01/24(金) 04:03:08.59
ゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミwwwwwwwwwwww
0499デフォルトの名無しさん2014/01/24(金) 19:28:10.04
>>497
どちらかというと、Vに求められる機能が多い(ことが多い)ので、VMが重くなる感じかな。結論は変わらないけど。
0500デフォルトの名無しさん2014/01/24(金) 20:51:31.72
DrawingContext.DrawTextって垂直方向の配置を指定できないんだね。
っていうかWPFってどうでもいいようなギミックは満載だけど基本設計が本当ウンコだな。
0501デフォルトの名無しさん2014/01/24(金) 21:29:39.71
拡張メソッド作ったら一行で終わるレベルの不満が基本設計ですか
0502デフォルトの名無しさん2014/01/24(金) 21:36:00.43
WinFormsから入った奴は最初DrawingContext使おうとするよね
滅多に使わない低レベルAPIだぞあれ
0503デフォルトの名無しさん2014/01/24(金) 21:40:03.31
むしろVB6じゃあるまいし、UI要素並べて全ての問題に対応できるわけがないでしょ。
0504デフォルトの名無しさん2014/01/24(金) 21:43:48.37
いやDrawingContextってむしろUI要素並べるだけのラッパー的なAPIなんだが
0505デフォルトの名無しさん2014/01/24(金) 21:43:49.12
ついでに言えば、FormattedTextなんて文字列と書式を合体させたオブジェクトを
引数に取るから、同じ書式を使いまわすなんて基本的なことも出来ない。

こんな仕様を考えた奴は馬鹿としか思えない。
0506デフォルトの名無しさん2014/01/24(金) 21:44:11.25
WPFだからって無理しなくてもSystem.Drawing参照してもいいんだよ?
0507デフォルトの名無しさん2014/01/24(金) 21:47:58.32
>>505
DrawingContextはWPFのもっと高レベルなところと同じく「保持モード」のAPIだ
変更したい時だけ使う
Drawing並べるのと同じなんだけどちょっと書くの面倒だからSystem.Drawing.Graphicsっぽくラップしてあるだけ
0508デフォルトの名無しさん2014/01/24(金) 21:52:05.03
>>507
そんな風な擁護をする奴が絶対にいると思ったけど、
プログラマにとって重要なことは目的をより直截的に実現する手段が用意されているかどうか、
それだけ。

保持モードだからそういう仕様になっているという事情は理解はできるが、
それが優れているとは思えない。
0509デフォルトの名無しさん2014/01/24(金) 21:56:11.27
だからDrawingContextは低レベルAPIであって
目的をより直截的に実現するためのものではないという話でしょ
0510デフォルトの名無しさん2014/01/24(金) 22:00:42.88
WPFは誰かがライブラリを作ってくれるのを口開けて待ってるだけの人間には使いこなせない
0511デフォルトの名無しさん2014/01/24(金) 22:04:35.02
> プログラマにとって重要なことは目的をより直截的に実現する手段が用意されているかどうか、
> それだけ。

ワラタw ちゃんと勉強する事も自分の頭で考える事も大事だよ。
使い方わからんからとすぐウワーってなる奴はプログラマには向いてないだろ。
ありあわせの組み合わせるだけの人は単なるオペレータ。
0512デフォルトの名無しさん2014/01/24(金) 22:07:29.96
>>509
だから、UI要素をXAMLやコードで並べるだけじゃ実現できないから低レベルのAPIを
使ってるわけだが、その低レベルAPIがあまりにも柔軟性に欠けるといってるんだけど。

例えば画面上の任意の位置に、矩形内の水平・垂直のAlignmentを指定して数百個文字列を
描画したい、パフォーマンスが重要、ってケースでDrawingContext.DrawText以外の選択肢が他にある?
0513デフォルトの名無しさん2014/01/24(金) 22:08:40.50
>>511
わからんなんていってないけど。
馬鹿だろお前。
0514デフォルトの名無しさん2014/01/24(金) 22:15:37.17
>>512
何が分からんのか分からん
普通に矩形要素の中にDrawTextでいいだろ
0515デフォルトの名無しさん2014/01/24(金) 22:44:27.83
グリッドならTextBlockの数百個程度は当たり前
0516デフォルトの名無しさん2014/01/25(土) 02:13:33.17
まあパフォーマンスを直截的に求めてDrawingContextって時点でWPFあるあるなんですけどね
0517デフォルトの名無しさん2014/01/25(土) 19:50:54.87
っつーかどうせ似たようなロジックばかりで作ったライブラリ使いまわすんだから粗結合とかどうでもいいよ
それより如何に簡単で書き易くパフォーマンスが良いかのほうが命題じゃないか?
WPFってパフォーマンス悪い・面倒・やりたい事がすぐできない
0518デフォルトの名無しさん2014/01/25(土) 20:06:38.26
WPFは手間かけて基礎から組み上げるもんだ
楽に作りたいならWeb行け
0519デフォルトの名無しさん2014/01/25(土) 20:17:43.98
出来ることが増えるのは良いことだし、その為に新しいフレームワークを覚え泣けれならないのは
当然のコストではあるが、問題はWPFに関してはコストに見合うゲインがあるとは
思われていないことと、GDI/GDI+より明らかに劣っていたり、出来なくなっていることが多すぎること。
0520デフォルトの名無しさん2014/01/25(土) 20:34:18.60
そうだね
そんなゴミはさっさと見切り付けてサヨナラしようね
0521デフォルトの名無しさん2014/01/25(土) 20:35:00.83
戦力の逐次投入はダメな戦術の代表だけど、WPFについて言えばその戦力の逐次投入にすらなってない。
0522デフォルトの名無しさん2014/01/25(土) 20:37:39.40
今のITはリーンスタートアップだとか>>521とは真逆のことが言われてるぞ
0523デフォルトの名無しさん2014/01/25(土) 20:43:55.97
>>522
それはぶっちゃけ我々作る側に都合がいい論理(言い訳とも言う)であって
アウトプットを使う側の視点の議論ではない。
0524デフォルトの名無しさん2014/01/25(土) 20:46:31.60
WPFってむしろ一括投入による失敗の典型例だろ
ASP.NET MVCとか最近のMSは逐次フィードバック反映を重視しだしてうまく行ってるぞ
0525デフォルトの名無しさん2014/01/25(土) 20:53:05.67
>>524
最初の段階である程度使い物になる完成度のものを投入した上で逐次改良を継続するのはいいが、
使い物にならないものを一旦公開して、足りないところは徐々に補っていくからみんな使ってって言っても
そうは問屋がおろさない。

逐次投入がダメ戦術ってのはそういう意味。
繰り返しになるけど、WPFはその逐次投入にすらなってない。
0526デフォルトの名無しさん2014/01/25(土) 21:38:17.20
使えない言ってる奴が使えないやつなだけじゃねーの
0527デフォルトの名無しさん2014/01/25(土) 21:46:14.88
また挫折しました。もう無理です。
0528デフォルトの名無しさん2014/01/25(土) 21:54:32.09
まあふぉーよりははるかにいろんなもの疎結合できていいけどな。
できないことが増えた言うけど逆にできることが増えた部分は無視すんのか。
0529デフォルトの名無しさん2014/01/25(土) 21:55:04.38
ふぉー>フォーム
0530デフォルトの名無しさん2014/01/25(土) 21:56:35.91
ム無しーですね
0531デフォルトの名無しさん2014/01/25(土) 22:07:37.71
>>526
違うと思うよ。

特定の人の悪口を言うのは気が進まないけど、某尾上氏みたいな人が
「王様が裸に見えるのはお前が馬鹿だからだ」みたいな発言が出来るのは
実は王様が裸であればこそ。

>>528
できないことが増えたとは言ってないけどね。
旧製品の置き換えをうたってる後続品に旧製品より劣る部分があれば、
そりゃ置き換えは進むはずがないよという話。
0532デフォルトの名無しさん2014/01/25(土) 22:36:17.06
そもそもサードパーティ製のコントロールが必要な時点でWinFormsもWPFも完成度って点では大差ないよ
カスタマイズしたいならWin32API必須ですがなにか?だからな
.NETはCocoaと比較してGUIがゴミ過ぎるんだよ、JavaFX8も忌まわしきXML拡張のFXMLだし、JDK8もしょんぼりなんだよな、匿名メソッドじゃなく匿名クラスとか存在価値がイミフ過ぎるわ
XPの買い替え需要でWinじゃなくMacに流れてるらしいし、マジでこのままデスクトップでもMacが幅をきかせ始めたら俺はObjective-C使えるから嬉しいけどなw
WPFで出来ることが増えたって、大して増えてねーじゃん、WinFormsと比較してそのちょっと増えたことがコストに見合わないんだよ
0533デフォルトの名無しさん2014/01/25(土) 23:30:40.29
旧製品より優れたところにメリットがあれば、旧製品に劣る所があっても置き換わる可能性はある
まず優れた所を探せ
そしてそれがメリットかどうかを考えろ
0534デフォルトの名無しさん2014/01/26(日) 00:14:27.71
命令口調の奴って何なんだろうね。意味が分からん。
っていうかどういう育ちしてるんだろこういうの。
0535デフォルトの名無しさん2014/01/26(日) 00:22:52.61
10年前ぐらいに開発始まったものに文句言ってるんじゃないw
0536デフォルトの名無しさん2014/01/26(日) 00:26:44.05
>>532
MacはiOSに比べてUIまともなのか?
iOSはUI開発糞だろあれ
0537デフォルトの名無しさん2014/01/26(日) 00:31:22.18
Macで開発って悪夢だな
0538デフォルトの名無しさん2014/01/26(日) 00:33:35.13
Qtでいいよもう
0539デフォルトの名無しさん2014/01/26(日) 02:21:44.23
Qtはいいよね サポートOSも多いし
0540デフォルトの名無しさん2014/01/26(日) 21:37:56.52
qtも5でかなり変わったし、ライブラリでかくなったしなあ。
0541デフォルトの名無しさん2014/01/27(月) 10:13:20.47
qtは柔軟で作りやすいのん?
0542デフォルトの名無しさん2014/01/27(月) 14:11:45.06
びばのんのんのん
0543デフォルトの名無しさん2014/01/27(月) 21:30:45.70
Qtは高レベルなコンポーネントの完成度が非常に高いけど
使い方はWPFの感覚からすると結構泥臭い
0544デフォルトの名無しさん2014/01/28(火) 02:55:44.84
3Dソフトみたいな案件でも採用されてるし柔軟性はあるんじゃね
この辺Qtらしい
http://www.thefoundry.co.uk/products/nuke-product-family/
http://www.thefoundry.co.uk/products/mari/
http://www.autodesk.co.jp/products/autodesk-maya/overview
0545デフォルトの名無しさん2014/01/28(火) 05:48:02.33
.net死んでまうん?
0546デフォルトの名無しさん2014/01/28(火) 08:08:16.10
3Dというか映画界隈はLinux版ありきなこと多いからな
Linux、Win、MacならQtはガッチリだろう
0547デフォルトの名無しさん2014/01/28(火) 08:19:10.48
LinuxのQtはすげえ品質低いぞ
おまけ程度に考えた方がいい
0548デフォルトの名無しさん2014/01/28(火) 09:54:17.75
>>544ぐらいできたら十分じゃない?
それとも上に上がってるのはQtとは名ばかりだったりする?
0549デフォルトの名無しさん2014/01/28(火) 12:17:15.45
QtてKDEのベースなんだけど。
それが品質ぼろぼろならどーすんだw
0550デフォルトの名無しさん2014/01/28(火) 22:03:02.93
>>547
Qt製の2ch Viewerが落ちまくったの良い思い出。今も不安定なままなんだろうか
0551デフォルトの名無しさん2014/01/28(火) 23:58:54.65
3DソフトってQt使えるの多いんだな。
検索したらどのソフトもユーザーが当たり前のようにQt呼び出してるわ。
こんな業界あるんだな。
0552デフォルトの名無しさん2014/01/29(水) 01:12:35.86
メーカー系の中小企業は割とQtを使ってたよ
0553デフォルトの名無しさん2014/01/29(水) 01:13:45.67
M#の登場で.NET死亡
ttp://www.msharp.co.uk/Home.html
0554デフォルトの名無しさん2014/01/29(水) 02:01:57.32
.NET上で動くものなのに.NETが死ぬとはこれいかに?そしてスレチだ。
ここはWPFのスレなんだがもしかして何だかわからず書いちゃった?
え?マジレスしたらいけないって?
0555デフォルトの名無しさん2014/01/29(水) 02:18:04.97
>>550
QtはGTK+よりはまともな印象があるなぁ。3Dはもともとunixな環境が強かった世界だし
あまりOSに依存した開発はしたくないとかあるんだろうね。Qtはもともとプロプラな物だし
昔はつぶしの効かないMFCとか使うぐらいならQtを選ぶのもわかる気がするわ。

しかしまぁ、この手のクロスプラットホームのものってどれも古臭い(良く言えば枯れている)
感じはあるよなぁ。あー、懐かしいとさえ思える泥臭さがある。wxWidgetとかもそんな感じ
だった記憶が。まー、新しければ良いという物ではないけど進化しない世界だなとは思う。
0556デフォルトの名無しさん2014/01/29(水) 09:52:38.81
GTKは糞
0557デフォルトの名無しさん2014/01/29(水) 10:06:26.57
>>553
Dart や Typescript 以上のものは感じなかった
0558デフォルトの名無しさん2014/01/30(木) 16:14:51.72
動画プレイヤーの全画面時みたいに、画面端にカーソルが来ると操作パネルがポップアップするようなの
なかったっけ?
0559デフォルトの名無しさん2014/01/30(木) 19:52:22.76
質問。
GridのセルなんかにImageを
<Image>
  <Image.Source>
    <DrawingImage>
      <DrawingImage.Drawing>
        <DrawingGroup/>
      </DrawingImage.Drawing>
    </DrawingImage>
  </Image.Source>
</Image>

みたいな感じで入れてると、DrawingGroupのDrawingContextに何か書くまでは
ImageのActualHeightもActualWidthもゼロを返すんだけど(まあ当然なんだろうけど)
その前のまっさらな状態でサイズを取得するにはどうしたらいい?

ImageをGridとかに入れ子にしてそいつのサイズを代わりに取得するしかないんだろうか?
0560デフォルトの名無しさん2014/01/31(金) 01:47:14.42
データグリッドのテンプレートカラムにスタックパネルを置いておき、
そのchildrenとしてテキストボックスのコレクションをバインドするにはどうしたら良いでしょうか?
0561デフォルトの名無しさん2014/01/31(金) 07:08:03.98
ItemsControl
0562デフォルトの名無しさん2014/02/03(月) 23:14:30.71
ツリービューのスクロールバーって、
色の変更は出来るのでしょうか?

ググる限り情報は見当たらなかったので、
ひょっとして出来ないの?と思いまして。
0563デフォルトの名無しさん2014/02/04(火) 02:28:35.81
できる。できるが・・・非常にめんどくさい。
0564デフォルトの名無しさん2014/02/04(火) 11:23:02.06
ScrollBarのStyle弄るとか、ControlTemplate書くとか
サクッと変更できるやん。
0565デフォルトの名無しさん2014/02/05(水) 16:58:52.03
MainWindowにあるボタンを押すとContentControlの内容が別のUserControlに切り替わる、というプログラムで
そのUserControlの中にも同じようにボタンを配置して切り替えられるようにしたいのですが、どのようにすればいいんでしょうか

「WPFで画面遷移風のアプリケーション」でググって出てくるブログ記事を参考にしています
0566デフォルトの名無しさん2014/02/05(水) 18:18:37.02
風の← 不要

宣伝乙!
0567デフォルトの名無しさん2014/02/05(水) 18:43:27.78
>>565
日本の情報は糞
MSのPrismに画面遷移の良いサンプルがある
0568デフォルトの名無しさん2014/02/05(水) 21:18:49.03
URL plz.
0569デフォルトの名無しさん2014/02/05(水) 23:15:37.20
>>567
小さいプログラムだからインフラ使うのもなと思って避けてたけどやっぱ使った方がいいのかな

ttp://msdn.microsoft.com/en-us/library/gg430861(v=pandp.40).aspx
この辺りでしょうか?勉強してみます
0570デフォルトの名無しさん2014/02/06(木) 03:21:59.23
>>569
小さいプログラムなら、まずは WPF にあるコマンドを使ってみれば?

UserControl で発行した RoutedCommand はツリーを親要素へと上っていくので、
それを MainWindow の CommandBinding で捕まえて、切り替え処理をすればいい。
http://msdn.microsoft.com/ja-jp/library/ms752308.aspx
0571デフォルトの名無しさん2014/02/06(木) 22:44:34.26
現在、.NET Framework 4.51環境です。
.NET Frameworkでのプログラミングは一切行っておりません。

EpsonDirectで購入したPCにChart Controlが入っていたので
削除を試みましたがエラーでできませんでした。

もしかして 3.5 + Chart Contolの環境を4.51に更新した場合、
Chart Controlが残ったままになるのでしょうか?
3.5のときにアンインストールすべきだったのでしょうか?
0572デフォルトの名無しさん2014/02/07(金) 00:35:38.54
スレ違い
0573デフォルトの名無しさん2014/02/07(金) 01:54:17.15
そうか。.NET4.5とスレタイに入ってるんだな。4.5に限定する理由ってあるん?
バージョンに依存した内容はほとんど無いよな。流石に3.0ベースはナイけど
0574デフォルトの名無しさん2014/02/07(金) 02:58:11.29
>>573
ヒント:Chartクラスが属する名前空間

少なくともバージョン縛りは関係ないと思うぞ。<スレ違いの理由
0575デフォルトの名無しさん2014/02/07(金) 09:01:42.66
そういう意味じゃねぇよ。入ってなきゃ勘違いもなかったろうという意味だ
0576デフォルトの名無しさん2014/02/07(金) 09:27:57.75
>>570
RoutedCommandを使って試行錯誤の末、期待通りの実装ができました
Windowを継承したクラスにまとめたらだいぶスッキリしました
ありがとうございました!
0577デフォルトの名無しさん2014/02/07(金) 18:22:28.67
Expression Blend 4 と Blend for VisualStudioは、何が違うの?
ImageとかのプロパティのProjectionが見当たらない
0578デフォルトの名無しさん2014/02/08(土) 22:48:50.82
SilverlightでNavigationFrameworkを用いてページ遷移をする場合、
遷移先のTo.xamlのコンストラクタに引数を渡す方法はないでしょうか?
NavigationService.Navigate(Object)メソッドが使えればPageを継承した
インスタンスを直接渡せるのですが、
あいにくsilverlightでは削られてしまっているようです・・・
わかりにくくてすみませんが、よろしくお願いします。
0579デフォルトの名無しさん2014/02/08(土) 22:53:32.95
こんな蛇足な方法が一番上に来ているところを見るにないみたいですね
http://stackoverflow.com/questions/4555985/how-can-i-pass-query-string-variables-with-navigationservice-navigate
0580デフォルトの名無しさん2014/02/08(土) 22:55:25.75
シングルトンでグローバル変数的に持っとけばいいよ
シングルトンだとテストがしづらいからPrismはシングルトンの代わりにDI使ってた
0581デフォルトの名無しさん2014/02/08(土) 23:16:37.27
こんな感じのヘルパーメソッドを使えばいいんじゃないの
void Navigate(NavigationService ns, Uri uri, Object context) {
 NavigatedEventHandler h = (s, e) => {
  ns.Navigated -= h; ((IMyPage)e.Content).OnNavigated(context);
 };
 ns.Navigated += h;
 if (!ns.Navigate(uri)) ns.Navigated -= h;
}
0582デフォルトの名無しさん2014/02/10(月) 14:22:57.30
ugaya40のサイトっていつ無くなったんだ?
0583デフォルトの名無しさん2014/02/10(月) 14:26:49.72
金払ってないだけでしょ
0584デフォルトの名無しさん2014/02/10(月) 18:23:43.09
404になる度に思うが、ちゃんと管理しとけよと。
0585デフォルトの名無しさん2014/02/10(月) 19:41:07.08
なんか2ヶ月に1度ぐらいのペースで見られなくなってるねw

金払ってないって今時カードか引き落としだと思うんだけど、
口座に1000円単位の金もなくなっちゃうほどカツカツの生活なのかなw
余計なお世話だけどさ
0586デフォルトの名無しさん2014/02/10(月) 19:42:57.20
引っかかるくせに鯖落ちで検索汚染してるわんくまクラスのウザさ
0587デフォルトの名無しさん2014/02/10(月) 19:52:54.67
あれも酷いねw
もう5年ぐらいずっとあの調子だ。
MSのwebサーバーは使えないって嫌がらせでもやってるつもりなのかね
0588デフォルトの名無しさん2014/02/10(月) 20:24:10.76
真面目な話、風物詩とかネタにして良いもんじゃないだろ。
小銭稼いでんだから、まとめて払っとけよ。
0589デフォルトの名無しさん2014/02/13(木) 01:31:29.31
WPFのWindowでマウスドラッグでウィンドウサイズ変える時に縦横比を固定する事って可能?
中身のコンテンツの比率を固定するのは簡単に出来るけど隙間が空いてしまうのが格好悪いなぁと。
0590デフォルトの名無しさん2014/02/13(木) 11:57:57.48
>>589
サイズ変更された時にWidthとHeightいじるとか(チラつくけど)
綺麗にやろうとするとWin32のWM_SIZINGメッセージとか。
MeasureOverrideやArrangeOverrideでどうにかなると思ったけど、Windowだとダメっぽいな。
0591デフォルトの名無しさん2014/02/13(木) 21:22:50.91
>>589
マウスポインタにウィンドウの隅が追従しないUIの方が絶対不恰好だと思うけど...
俺ならそんなアプリド素人が作ってるとみなすよ
0592デフォルトの名無しさん2014/02/13(木) 21:41:13.99
ボーダーとカーソルが一致するように縦横比固定することは可能だし実際にあるんだけど…
0593デフォルトの名無しさん2014/02/13(木) 22:19:09.62
ではお伺いしますが、そういうアプリでマウスを完全に水平方向に左に移動させる
動作をしたらどうなるの?

少なくとも次の4パターンが考えられるが、

(1) マウスポインタは動かない
(2) マウスポインタは左に動くがウィンドウの枠は動かない
(3) マウスポインタは左に動くが、ウィンドウの枠は楯横比を保って拡大
(4) ウィンドウの枠は楯横比を保って拡大。マウスポインタはウィンドウ枠の対角線にそって動く

どれも直感的とは言いがたいね。
0594デフォルトの名無しさん2014/02/13(木) 22:32:16.96
操作方法が既知として扱われている以上、目で見れば分かる多少の動作の違いに直感的もクソもねえよ
0595デフォルトの名無しさん2014/02/13(木) 22:43:30.19
>>590
やはりそれしかないか。ってことでWM_SIZINGハンドリングしてサクと作ってみた。
まぁ、出来たんだがWindowChromeで見た目変えてるのってリサイズ時に素のウィンドウの
描画が一瞬見えるのな・・・。今回の固定比率とはまた別の話だけど。

>>591
言いたい事は分かる。
けど、今回は背景画像が固定になっていて比率変えると間延びして恥ずかしい事になるんだ。
かといって隙間入れるともっと恥ずかしい。デザインした奴に死ねと言いたい気分だけど
色々事情があって差し替え出来ないので苦渋の選択なんだよ。
ホント他に良いアイディアあったら教えて欲しい位だわ。クールな玄人の意見教えてよ。
0596デフォルトの名無しさん2014/02/13(木) 23:40:32.46
ウインドウが横に広ければ背景画像の上下または下を切る
ウインドウが縦に広ければ背景画像の左右または右を切る
というのはたまにやるけどこれも画像によるな
0597デフォルトの名無しさん2014/02/14(金) 00:28:42.06
>>595
隙間が入ると恥ずかしいって感覚はよく理解できないな。

メディアプレーヤー系のアプリなんかみんなそうだし、それがかっこ悪いとも
もっといい方法があるとも思わない。
0598デフォルトの名無しさん2014/02/14(金) 01:50:18.78
デザイン分業が叫ばれるWPF界隈でマーにデザインを聞いてどうする
デザイナーに聞け
0599デフォルトの名無しさん2014/02/14(金) 04:04:57.22
>>597
えー?感覚違うんだな。

http://imgur.com/hDPOpOn

適当なサンプルだけどこういうのの隙間見て気持ち悪くない?
実際のは色々な要素がハードコーディングになっていてボタン群やら文字やらの
全体にエフェクトがシームレスにかかっているのでバラして調整も出来ないんだわ。

まー、WPFと全然関係ない話になったのでこの辺にしておくけど・・・。
0600デフォルトの名無しさん2014/02/14(金) 04:42:09.55
>>599
例えば動画プレーヤーでそんな風になるやつあるけど別に変だとは思わないな。
ウインドウの中で縦横比が保たれていればいいんじゃないの。

背景色変えてみたらちょっと印象変わるんじゃない?
http://imgur.com/fEe4k2I
0601デフォルトの名無しさん2014/02/14(金) 05:36:01.25
動画プレイヤー動画プレイヤーって・・・うまく説明出来ないけど動画とか絵とかのコンテンツ表示の為の領域と
ユーザーが操作するアプリがこういう風に動くのでは全然デザインに対する意味も違うと思うんだけど・・・。
まぁ、感覚の違いがあるのは良く分かったよ。
0602デフォルトの名無しさん2014/02/14(金) 10:32:06.95
明らかに隙間があった方がおかしいでしょ
比率固定で動くウィンドウを持つアプリケーションなんて結構あるし
デザイン的にズレるなら尚更適切な比で表示した方がいいような
0603デフォルトの名無しさん2014/02/14(金) 12:43:19.97
UI議論スレじゃねーんだけどよその辺理解できてまちゅかゴミども
0604デフォルトの名無しさん2014/02/14(金) 20:40:28.02
>>602
Win9xの時代にはそういうのあった(俺も印刷プレビュー画面をその方式で作ったことがあった)けど、
今はまず見ないでしょ。

さすがに今となってはセンスが悪いUIと言わざるを得ない。

まあ隙間が開くとかっこ悪いって感覚はやっぱりよく分からないけど、どうしてもってことなら、
クライアント領域のW/HがコンテンツのW/Hより小さい場合はHを、大きい場合はWを合わせて
他はスクロールバーで対応するのかね。

スクロールバーの幅を考慮に入れる必要があるからかなり面倒になると思うけど。
0605デフォルトの名無しさん2014/02/14(金) 20:59:08.47
>>595
そういうのは設定で決めさせるのさ
ウインドウはNoResizeでok
0606デフォルトの名無しさん2014/02/15(土) 18:58:29.27
質問しようと思ったのですが、整理してるうちに一応解決したので貼ります

−−−−−−−−−−−−−−−−−−−−−−−−−−ここから質問

DataGridで選択中のDataGridCellからRowIndexを割り出す方法を教えてください
条件としては

・仮想化されている
ItemContainerGenerator.ItemFromContainerなどは画面外のCellにnullを返すため使用不可
仮想化はmust要件にされたので切れません

・カラムによるソートが有効になっている
バインド元のデータと表示中のデータ順が同期していないので、元のリストを検索しても意味がない
この表示中のデータに触れれば一番楽だと思うのですが

−−−−−−−−−−−−−−−−−−−−−−−−−−ここまで書いた

後者の方法はあまり掘り下げてなかったので、試したら以下のように取れそうでした

var view = (CollectionView)CollectionViewSource.GetDefaultView(dataGrid.Items);
var list = v.OfType<Itemの型>().ToList();
int rowIndex = list.IndexOf(item);

あとは落とし穴がないことを祈るばかり
0607デフォルトの名無しさん2014/02/15(土) 19:08:11.51
アイテムが重複を許すならバグるってすぐ分かったけど、
解消する方法が思いつかない。
CellからItemを得ても何個目に出現するものかは分からないものね。
0608デフォルトの名無しさん2014/02/15(土) 19:24:48.22
>>606
それ意味的に正しいのはOfTypeじゃなくてCastだろ
要素数が狂ってバグの元だぞ
なぜかWebの解説なんかではOfTypeがよく出てくる気がするが、ほとんどのケースではCastが適切
0609デフォルトの名無しさん2014/02/15(土) 19:32:34.40
>>607
アイテムにラッパーを被せればいいよ
ItemContainerGenerator.IndexFromContainerもItemContainerが重複していないから正しくインデックスを返せているわけで
0610デフォルトの名無しさん2014/02/16(日) 19:02:47.54
よくわからないけど、indexをどっかに埋め込むのはだめなの?
0611デフォルトの名無しさん2014/02/18(火) 19:43:55.00
TabItemを動的に作成するのにViewModelをViewに適用って方法でやってます。
その場合TabItemってどうやって取得するんですか?
ItemsとかSelectionChanged.AddedITem見に行ってもViewModelが入っているので困っています・・・。
0612デフォルトの名無しさん2014/02/18(火) 19:48:22.03
ちょっと上に書いてあるItemContainerGenerator.ItemFromContainer
0613デフォルトの名無しさん2014/02/18(火) 21:08:19.61
>>612
ありがとうございます。
TabControl.ContainerFromItemのほうでViewModelからTabItemがとれました。

最終的にTabItem.Contentの中をVisualTreeHelperで検索したかったのですが
TabITem.ContentがViewModelでだめでした。
再度質問で申し訳ないですが
どうやったらVisualTreeHelperが使えるようになるんですか。
0614デフォルトの名無しさん2014/02/18(火) 21:15:52.33
TabItemの子孫が欲しいならそのままTabItem渡せばいいだろ
0615デフォルトの名無しさん2014/02/18(火) 21:25:03.10
>>614
あーすみません。
わかりました。
最初に呼ばれるSelectionChangedのなかだとまだUIが作られてないんですね・・・。
0616デフォルトの名無しさん2014/02/18(火) 21:55:40.66
あるある
0617デフォルトの名無しさん2014/02/18(火) 22:15:41.63
コントロールの縦横スクロールバー出現時の
右下の空白の色を変えたいのですが
どこの設定をいじれば変わるでしょうか?

http://aug.2chan.net/zip/3/src/1392729274100.png

外国のサイトまで探したのですが、
情報が無く困っています。

使用しているコントロールは、
TreeViewとListBoxです。
0618デフォルトの名無しさん2014/02/19(水) 00:58:27.92
そういうのはBlendでテンプレート弄る
0619デフォルトの名無しさん2014/02/19(水) 01:12:55.97
TabControlでTemplateを設定すると、TabItemの中身のListboxをホイールでスクロールさせられなくてはまってます・・。
(スクロールの代わりにTabが切り替わる)
よい妥協策はないでしょうか・・・。

<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TabPanel Grid.Row="0" IsItemsHost="true"/>
<Border Grid.Row="1">
<ContentPresenter ContentSource="SelectedContent"/>
</Border>
</Grid>
</ControlTemplate>
0620デフォルトの名無しさん2014/02/25(火) 14:11:59.84
WPFの話になるのか分からないけど、ずっとWin8で開発していて
デザインもきっちり収めて悦に入ってたんだけどWin7で動かしてみたら
テキストのレンダリングが違うみたいで字がはみ出たり散々な状況。

何かOS依存しないで同様に配置出来るうまい方法は無いもんかねぇ。
0621デフォルトの名無しさん2014/02/26(水) 01:51:46.33
そんなあーたにWinForm
0622デフォルトの名無しさん2014/02/27(木) 15:25:23.25
もう画像にしちゃうって手も…
0623デフォルトの名無しさん2014/03/02(日) 08:01:45.99
code.msdn.microsoft.com/windowsdesktop/MVVM-d8261534

このページのサンプルで、対象フレームワークを4.5以上にあげると
実行した時、小数点が入力できません。
4以下にすると入力できるようになるのですが、なぜでしょうか?
0624デフォルトの名無しさん2014/03/02(日) 16:15:36.25
>>623
例えば12の後に小数点を打つとバインドされたプロパティ(double型)の値は12.0になってる。
で表示するときに「.0」部分は無視されて(書式設定してないから?)12と表示される。
だから小数点が打てない状態になっているみたい。
(123と入力した後に12と3の間に小数点を打てば12.3になる。)

フレームワークのバージョンで挙動が違う原因は俺にはわからない。
0625デフォルトの名無しさん2014/03/02(日) 22:44:31.89
一言で言えばバグ
0626デフォルトの名無しさん2014/03/06(木) 11:23:45.29
単位変換みたいなValueConverter全く実装されてないけど使わせる気あるのこのフレームワーク
0627デフォルトの名無しさん2014/03/06(木) 12:32:58.15
そんなもん自力で書けよ
0628デフォルトの名無しさん2014/03/06(木) 13:40:14.28
んな細々したライブラリが充実するほどにはユーザーがおらん

MVVMと非同期ツールキットくらいしかまともなサードパーティライブラリないしな
0629デフォルトの名無しさん2014/03/06(木) 15:12:41.36
>>628
MVVMCrossぐらいできてたらもう十分だろ( ̄(工) ̄)
0630デフォルトの名無しさん2014/03/06(木) 15:33:12.22
何個似たようなMVVMのフレームワーク作る気なんだろうな
馬鹿じゃないの
少しはその労力他に割けよ生産性のない奴らめ
0631デフォルトの名無しさん2014/03/06(木) 22:56:33.47
>>630
同じ奴が作ってるならそうだろうな(。-_-。)
0632デフォルトの名無しさん2014/03/07(金) 02:18:25.97
>>589
だいぶ古い投稿だけど返信

ウインドウをCanvasで埋めて、それとbindingを連携すれば
いいんじゃない?
0633デフォルトの名無しさん2014/03/07(金) 18:01:45.83
次のバージョンはDirectX11ベースになってくれると嬉しい
0634デフォルトの名無しさん2014/03/07(金) 18:07:16.93
>>633
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4083793-native-directx-11-support-for-wpf
0635デフォルトの名無しさん2014/03/07(金) 18:10:53.89
>>634
日本語でおk
0636デフォルトの名無しさん2014/03/08(土) 11:10:45.46
WPFの用途だとDX11ベースになっても見た目は何も変わらない
落ちにくいんだろうけどそもそも落ちない
0637デフォルトの名無しさん2014/03/08(土) 11:26:38.57
DX11はDX9系に比べれば描画性能けっこう良いから、パフォーマンスは安定するぞ
0638デフォルトの名無しさん2014/03/08(土) 11:32:49.28
MSが書いてるコラムを見てもボトルネックは描画よりバインディングの方ですしおすし
0639デフォルトの名無しさん2014/03/08(土) 11:42:03.59
パフォーマンス向上しそうなシェーダー処理が絡んでるのEffectとかその辺だろ?
2Dのフィルやマッピングでパフォーマンス改善されんの?
0640デフォルトの名無しさん2014/03/08(土) 12:43:19.04
シェーダ以前の通常描画でもそれなりにパフォーマンス違う。
といっても2倍未満くらいだが。

バインディングは、まあ…
0641デフォルトの名無しさん2014/03/08(土) 19:22:51.63
いい加減WPFにこだわるのやめてUnityみたいなマルチプラットフォームIDEを作れよMS
何のための.NET Frameworkなんだ?
WPFがWindows以外で動けばデベロッパー増えるだろうに
0642デフォルトの名無しさん2014/03/08(土) 20:00:42.82
>>626
それよりデフォルトのカルチャがen-USなのがウザイ
ローカルを使わせようとすると

xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib"

Text="{Binding LastWriteTime,StringFormat=d,ConverterCulture={x:Static g:CultureInfo.CurrentCulture}}"/>
0643デフォルトの名無しさん2014/03/08(土) 20:05:31.77
いちいちBindingにカルチャ指定してるのか…
0644デフォルトの名無しさん2014/03/08(土) 20:12:03.86
>>641
希望的観測過ぎて笑える。一体Windows以外のどのプラットホームのユーザーが使うと思うの?
0645デフォルトの名無しさん2014/03/08(土) 20:19:03.16
大量のコントロールある画面の描画速度どうにかしてあげられないかな?
rectangleとline動的に使いまくったらとても遅い
0646デフォルトの名無しさん2014/03/08(土) 20:22:19.51
Silverlightがまさにそれだろ
クロスプラットフォームなクライアントはSilverlightやFlexやJavaFXが全滅してHTML最強で決着した
MS自身が.NET FrameworkをオープンソースにしてVSもマルチプラットフォームにすれば
間違いなくJava潰してASP.NETで天下取れるだろうけど、結局それだとMSの利益にならないからね
0647デフォルトの名無しさん2014/03/08(土) 20:36:16.49
Silverlightはチーム解散したよ、知ってると思うけど
切り捨て早いw

まあぶっちゃけWPF推奨するよりWinFormsをより良いものにしていったほうが
みんなが幸せになれるよね

とにかくMSは使えないGUIライブラリを作り過ぎ
MFC, ATL/WTL あたりは完全に捨てて本当に使えるものを
一つだけ作るべき
0648デフォルトの名無しさん2014/03/08(土) 20:38:43.46
いまさらFormsでバインドもどきとか本当にありえない
0649デフォルトの名無しさん2014/03/08(土) 20:43:50.15
そもそもバインドはいらない
0650デフォルトの名無しさん2014/03/08(土) 20:44:26.28
>>648
まあ今は駄目でも良いものにしていくんだよ

ぶっちゃけどんなに出来が悪くてもWin32APIとWinFormsは
無しにはできないんだから、これらにリソースを集中すべき
リソース分散させた挙句にクソGUIライブラリ量産って
意味が分からなすぎるw
0651デフォルトの名無しさん2014/03/08(土) 20:45:57.35
昔からではあるが最近MSの迷走が特に酷いからな
0652デフォルトの名無しさん2014/03/08(土) 20:55:49.96
機能詰め込みすぎを認めてサブセットにした方がいいんでねえのとは
0653デフォルトの名無しさん2014/03/08(土) 22:03:50.33
それでもXAML以外はもうあり得んわー(´・ω・`)
0654デフォルトの名無しさん2014/03/09(日) 04:44:06.28
入門したいのですが
エッセンシャルWPFって本は今買っても有用でしょうか?
0655デフォルトの名無しさん2014/03/09(日) 11:46:23.02
DataGridに文字出す時に行の高さに合わせて文字を調整したいんだけど
そういう場合ってViewBox位しか手が無いよね?
ViewBoxでやると内容を横方向のサイズへ合わせる形には出来るんだけど
縦方向に合わせて調整して文字サイズを全行で一定にみたいなのが難しい・・・。
とりあえずは入れるデータの文字数を調整すればなんとかなるけどもっと
スマートな方法あるのかなぁ・・・。
0656デフォルトの名無しさん2014/03/09(日) 13:17:38.84
>>654
今はMVVMとかも盛り込んでるようなのにした方がいいと思うけど…和書であるかは知らん
0657デフォルトの名無しさん2014/03/09(日) 13:29:07.17
書いても売れないんで
ストアができて多少普及するかと思ったけどそんなこともないね
0658デフォルトの名無しさん2014/03/09(日) 13:31:58.14
書いても売れない以前に書ける人いないんでしょうな
実際に実務で使っている人は本を書いている暇なんぞないだろうし
0659デフォルトの名無しさん2014/03/09(日) 13:34:41.91
MVPが書けば
偉そうなこと言ってるしエバンジェリストくらいの立場に居るでしょ
業務の一環としてやればいい

まさか土方じゃあるまい
0660デフォルトの名無しさん2014/03/09(日) 14:00:32.18
とーちゃんは日本一の
0661デフォルトの名無しさん2014/03/09(日) 14:27:05.06
現在プログラム板のID制導入の投票を実施中です
よろしくお願いします

プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
0662デフォルトの名無しさん2014/03/09(日) 16:52:06.73
やっとID強制になるのか
色々黒い噂というか推測はあるけど、こっちの意見が通る分新運営のほうが何十倍もマシだわ
0663デフォルトの名無しさん2014/03/09(日) 17:32:50.19
どこぞのスレとかどうなるのかね
どこぞってかAPIスレだが
0664デフォルトの名無しさん2014/03/09(日) 17:37:04.84
もしや、導入と同時に過去レス分も表示されたりすんの…?
このスレは過疎ってるからともかく、おもしろいことになりそうだなw
0665デフォルトの名無しさん2014/03/09(日) 22:21:28.38
WPFでコントロールにイベントハンドラを設定した場合、ユーザーの操作だけでなく
プログラムから操作した場合もイベントハンドラが起動してしまうんだけど
(ListBoxの項目選択とか)
プログラムから操作した場合はイベントを起こさないようにすることは可能?
今はプログラムで操作する前にフラグを立てて
イベントハンドラ内でスキップ判定してるけど、スマートでない気がしてます
0666デフォルトの名無しさん2014/03/09(日) 22:35:27.04
同じ状態変化を区別しようってのがナンセンス
0667デフォルトの名無しさん2014/03/09(日) 23:13:02.27
>>651
そりゃあCEOがあれだから。
新しい人になったけど、どーなるかね。
0668デフォルトの名無しさん2014/03/10(月) 00:10:31.74
>>666
なるほど一理あります
でもコントロールが入力装置と出力装置を兼ねている以上
双方向からの状態変化が来るのは避けられないんだよな…困った
0669デフォルトの名無しさん2014/03/10(月) 00:27:19.39
>>666の言うとおりで、状態の変化を起こしたのがユーザーかコードかを
区別しなきゃならないってのは多分変な思い込み。
0670デフォルトの名無しさん2014/03/10(月) 02:30:26.52
>>644
Windowsのデベロッパーは皆MacやLinuxでVS使って開発したいって思ってると思うぜ
そもそもXamarinのウリがC#よりVS+.NETでの開発なんだから・・・
0671デフォルトの名無しさん2014/03/10(月) 03:23:24.36
>>670
一昔前にはPHP.netなんてものもあったな。
あれ、どうなったんだっけ?
0672デフォルトの名無しさん2014/03/10(月) 04:49:20.93
>>670
根本的に勘違いしてないか?
MacやLinuxで開発したくないから(ネイティブ環境で開発出来る人が少ないから)
Windowsで動く開発環境(VS)で他のプラットホームでも動くアプリ作ろうってのが
今のXamarinだろうに・・・。
皆とか言ってるけど開発環境をLinuxにしたいWindowsユーザーなんか想像もつかないわw
0673デフォルトの名無しさん2014/03/10(月) 20:14:51.27
>>665
イベントハンドラの先頭にフラグで処理制御

if(flag)
return

コードの変更前にflag=true
変更終わったらfalse
0674デフォルトの名無しさん2014/03/10(月) 20:24:30.67
一日遅れで質問に書いてある対処法を書く人ってかっこいい
0675デフォルトの名無しさん2014/03/10(月) 21:15:25.43
>>672
いまiOS向けの開発してるけど、VSからだとデバッグとか時間かかりすぎて実ように絶えない(。-_-。)
0676デフォルトの名無しさん2014/03/11(火) 00:48:59.23
>>675
Xcodeもobj-cもろくに使えない無能なのが悪い。諦めて無駄な時間費やしてデバッグしてなさい。
0677デフォルトの名無しさん2014/03/11(火) 01:25:58.94
>>676
XamarinStudio使えば解消されるんだが。
あんなめんどくさいクソ言語使って俺できる男キリッとか池沼ですかw
0678デフォルトの名無しさん2014/03/11(火) 03:33:42.71
>>677
自分が理解出来ないから糞言語か。自分が無能ですと自己紹介して楽しいんかね。
0679デフォルトの名無しさん2014/03/11(火) 06:47:29.92
>>678
お前も他のいい言語があるのを少し知った方がいいぞ。
今の時点でObjectiveCがすぐれてるとこってなんなの?記述もめんどくさいしMac/iOS以外で使われてないことが言語としての優位性を持ってないことの証明にならん?
0680デフォルトの名無しさん2014/03/11(火) 07:03:03.37
Xcodeはドキュメントフォーマットすらロクに出来ないのにIDE名乗って恥ずかしくないの
0681デフォルトの名無しさん2014/03/11(火) 07:34:23.14
そんなの飾りです
ドザーには分からんのですよ
0682デフォルトの名無しさん2014/03/11(火) 08:45:51.47
>>679
つか、そういうのって適材適所だろ。言語的な良さなんか糞の役にもたたん。
結局それ用に設計されてるんだしちょっと凝ったことやろうとするとネイティブな環境の方が
痒いところに手が届くんだし。WPFに全然関係無いしいい加減スレチやで。
0683デフォルトの名無しさん2014/03/11(火) 10:51:30.24
>>682
すれち言うなら>>641あたりから言えや
0684デフォルトの名無しさん2014/03/11(火) 11:25:21.44
少なくともobjcはみんな避けたがってるのは事実
0685デフォルトの名無しさん2014/03/11(火) 11:46:04.50
しかしiOSのAutoLayoutは慣れれば簡単に使えるようになるのか?
XAMLに慣れた身だとどうにもわからなくて、結局前作ったレイアウトシステム弄ってXAMLライクに設定できるようなの作ってしまったが不必要なもの作ったのかどうか確信が持てない。
0686デフォルトの名無しさん2014/03/11(火) 15:01:45.36
そもそもiOSというかiPhoneやiPadは解像度がある程度固定されてるのしか存在しないというなが最大のメリット(だった)だから簡単だった
0687デフォルトの名無しさん2014/03/12(水) 08:18:49.76ID:OXUOGNNe
そう思ってた時期が僕にもありました(aary
0688デフォルトの名無しさん2014/03/12(水) 12:00:42.17ID:lM6It6rw
IDがついに導入されたんだな

記念カキコ
0689デフォルトの名無しさん2014/03/12(水) 12:49:51.37ID:3ENgQR/9
あらほんとだ。

VSのXAML対応はもう少し頑張って欲しいな。現状エラー起きると特定が大変。
printfデバッグ的なことすらできないしなんとかならんものかなぁ。
正常な記述してもデザイナーがエラーはくのとかも困る。
パーツ共通化してリソースでマージしてとかすぐエラーはくしな。
まぁそういうのはコントロールにしろって考え方なのかもしれんが。
0690デフォルトの名無しさん2014/03/12(水) 17:42:49.77ID:S81t4a/W

ID気づかなかった
いいねぇ
0691デフォルトの名無しさん2014/03/13(木) 17:42:17.30ID:iT1RVwOl
ロジックではなくUIの読み込みが遅いのでアニメーションで誤魔化したいんだけど
遷移前にアニメーション開始、ロードしたUserControlのLoadedのタイミングで終了
ってやると何も表示されないで終わる・・・。タイミングの取り方も問題だろうけど
UIスレッドが一本なのでロード中固まってしまうという話な気がするので・・・対策が
思いつかないわ・・・。何か良いアイディア無い?
0692デフォルトの名無しさん2014/03/13(木) 18:12:35.85ID:kiH7w+gK
UIの読み込みが遅いって何?
0693デフォルトの名無しさん2014/03/13(木) 18:45:20.53ID:QAr7puSZ
ロジック(VM?)じゃなくて、読込が遅くなるほど重量級のUserControlって一体…
0694デフォルトの名無しさん2014/03/13(木) 18:48:10.55ID:iT1RVwOl
客先に指定された買い入れのWinFormsのコントロール
複数あるのも原因だけど張り付けただけでも全部読むと秒単位固まるんだよね・・・
あまりに糞過ぎて捨てたいんだけどそうもいかんという。PRISMの問題でもあるんかなぁ
0695デフォルトの名無しさん2014/03/13(木) 18:59:44.80ID:ZTADfK4m
> UIスレッドが一本なのでロード中固まってしまうという話
既に答えが出てるじゃないか。
UIスレッドが1本なのが問題なら、2本にすればいい。

多少、泥臭くて面倒だが、誤魔化す為のアニメーションなら現実的なレベルだろう。
0696デフォルトの名無しさん2014/03/13(木) 19:19:15.64ID:EdKYJdmY
RibbonWindow使ったら外枠がおかしくなる現象はどうすれば治りますか?
0697デフォルトの名無しさん2014/03/13(木) 19:26:16.05ID:dycS71DR
>>695
UIスレッド2本とかねーよw
0698デフォルトの名無しさん2014/03/13(木) 21:07:13.29ID:iT1RVwOl
>>695
>>697
うん、俺も出来ないと思ってたんだけど二本に出来るんか?しかも一つのウィンドウの中とかで。
0699デフォルトの名無しさん2014/03/13(木) 23:56:20.01ID:ZTADfK4m
>>698
当然、1つのウィンドウの中で2つのUIスレッドは使えない。

別ウィンドウなら別のUIスレッドが使えるので、
別ウィンドウを元のウィンドウのすぐ手前に配置して、1つのウィンドウのように見せる。
0700デフォルトの名無しさん2014/03/14(金) 00:45:20.87ID:bbGk2WDX
>>699
誰得だよそれ…(´Д` )
0701デフォルトの名無しさん2014/03/14(金) 04:27:21.25ID:HgH3MD9i
なにを言ってるんだろう…とまぁ俺の無知なんだろうなと静観してたが、
そういう意味かよ…スプラッシュウィンドウ的な単語を使えば誰でも分かったと思うんだがw
0702デフォルトの名無しさん2014/03/14(金) 06:40:40.34ID:SfVBkUP1
遷移前に一回裏でnewしておけば早くなるパティーンもあるけど
0703デフォルトの名無しさん2014/03/14(金) 12:52:11.84ID:oQoAR40W
>>696
あれ出来悪いからソース付きの旧バージョン使った方がいいと思う
出来自体は一緒だが自分で修正しやすい。
名前空間とか差し替えたらそのまま使える
http://www.microsoft.com/en-us/download/details.aspx?id=11877
0704デフォルトの名無しさん2014/03/15(土) 21:20:28.85ID:s/ZKyli9
こんな結果になるんなら、
命名はお姫様細胞で良かった。
0705デフォルトの名無しさん2014/03/16(日) 17:10:00.52ID:oNuhFUS2
Binding.IsAsyncに2週間早く気づいていれば・・・こんなことには
0706デフォルトの名無しさん2014/03/24(月) 01:04:16.11ID:WN1ig2I7
DataGridのセルにComboBox(テキスト編集可能状態)を入れた状態でそのセルの
文字を編集した時に日本語だけ入力した場合編集を終了してもデータが入力された
事にならないみたいなんだけど原因分かる人います?
アルファベットだけとかアルファベット+漢字みたいに混ぜると大丈夫だし不思議な
動きな気がしているんだけど・・・。
0707デフォルトの名無しさん2014/03/24(月) 01:58:35.73ID:trnp8Ujb
Control.Backgroundの規定値はBrushes.TransparentとMSDNには書いてあるけど
これ間違ってるよね?
実際はnullでマウスイベントが取れなくてちょっと悩んだ。
0708デフォルトの名無しさん2014/03/24(月) 15:21:57.76ID:N2+Y2XM3
>>707
なんかVS2012とVS2013で挙動が違った記憶があるんだけどどうだったかなぁ。
同じ.NET 4.0 Full向けのプロジェクトを開いているのに2012ではBackgroundが
設定されていないと白だかだったのが2013で開くと透明になっていた気がする。
0709デフォルトの名無しさん2014/03/24(月) 21:50:09.10ID:trnp8Ujb
http://ideone.com/IARf72

こんなんやってみたら最後の要素しか表示されない。
DataTemplate使えばいいんだけど、何が間違ってるのか分からん。
0710デフォルトの名無しさん2014/03/24(月) 22:06:03.81ID:rS2wZVev
それだとTextBlockはインスタンス一つしか作られないから
0711デフォルトの名無しさん2014/03/24(月) 22:08:08.92ID:bZk4pJSQ
1つのTextBlockが複数の親を持つことになるからじゃないの
07127092014/03/24(月) 22:33:11.68ID:trnp8Ujb
あーなる、言われてみればそうだわ。
すっきりしたわ、ありがとう。
0713デフォルトの名無しさん2014/03/25(火) 21:28:51.46ID:p8802FLC
>>707
透明のブラシを指定してもマウスのイベントは透過するはずだけどねw
0714デフォルトの名無しさん2014/03/26(水) 00:05:22.70ID:Pj9p4mhe
>>713
TransparentだとMouseLeftButtonDownが取れるけど、nullだと下の要素に行っちゃう。
この辺の事ってどこに書いてあるんだろう。
0715デフォルトの名無しさん2014/03/26(水) 10:08:12.08ID:s2g7M8bp
>>714
ここ
http://msdn.microsoft.com/en-us/library/ms752097.aspx
0716デフォルトの名無しさん2014/03/30(日) 23:18:57.63ID:a/E0lR2i
ComboBoxをIsEditable=Trueにした状態で実行時に日本語のみを入力すると
IMEにGoogle日本語入力使っているとPropertyChangedが来ない事に気付いた。
アルファベットのみやMS-IMEだとちゃんと来るんだけど・・・orz
これってどんな状況でも入力された文字を受け取れる方法ってあるかな?
ATOKとかはどうなんだろうなぁ・・・。
0717デフォルトの名無しさん2014/03/31(月) 00:49:52.40ID:X716KWav
Nyaruruとかいう人が随分前にそんな記事書いてたな。
詳細は忘れたが
0718デフォルトの名無しさん2014/03/31(月) 01:08:06.85ID:e6ZWuSMF
UpdateSourceTriggerがPropertyChangedでソースがupdateされないって意味だろうか…
コードビハインド側でならイベ拾えてるとかあるし、もし発生してるなら
手動でUpdateSourceしちゃうとか…
0719デフォルトの名無しさん2014/03/31(月) 02:15:54.07ID:ETDm8N10
>>717
その人がGoogleIMEに絡んでてWinRTのIMEは魔界だ的なつぶやきしてた希ガス。
個人的にはあの人をIMEなんかに時間とらしてるのが勿体無い希ガス
0720デフォルトの名無しさん2014/03/31(月) 19:48:13.83ID:I0zYfHgV
MSは昔からIMEの仕様をいい加減にしてる
Googleはしっかり対応できないので適当に実装をしてる
研究費はかけたくないみたいだ

MSのアーキテクトがちゃんと考えてないんだと思う
IME使ってない人間が開発してる恐れもある
0721デフォルトの名無しさん2014/03/31(月) 19:51:27.81ID:pqvpBedH
>>720
あれはepson製でしょう?
0722デフォルトの名無しさん2014/04/02(水) 12:36:43.32ID:VeuFJ2+/
MS-IMEって中華製なんでしょ?
0723デフォルトの名無しさん2014/04/04(金) 16:10:32.83ID:eGYDDpSi
XAMLで配置したコントーロルのうち、テキストを入力可能なものを選んでC#コード側である処理を行いたい場合、どうやればいいですか?
コントロールを一個一個取得するコードはできていて、デバッグ実行すると各コントロールのインスタンスのプロパティは見えています。
0724デフォルトの名無しさん2014/04/04(金) 16:16:47.80ID:fbrPwcTM
>>723
「テキストを入力可能なもの」というのが、
IsReadonly=falseのものを指してるのか、IsEnabled=trueのものなのか、
文字列を設定可能なコントロールを指してるのか、意味不明なんだが
0725デフォルトの名無しさん2014/04/04(金) 16:23:49.39ID:eGYDDpSi
>>724
画面上に存在していて、テキストの入力を受け付けるコントロールを選びたいので
前者が意味的に近いと思います。
0726デフォルトの名無しさん2014/04/04(金) 16:29:31.87ID:fbrPwcTM
>>725
コントロールを取得するコードがあり、各コントロールのインスタンスのプロパティも見えてるんなら
あとはやりたいように実装すればいいだけでは?

もしかして「見えてる」とは、コードじゃなくWPFビジュアライザのこと言ってる?
0727デフォルトの名無しさん2014/04/04(金) 16:34:47.41ID:33nh4Dwt
ホントに質問の意味がわからない…
よもや if を知らないとかそういうレベル…?もうwpfうんぬんやないでそれだと。。
0728デフォルトの名無しさん2014/04/04(金) 16:39:38.48ID:eGYDDpSi
>>726
コントロールを1つずつスキャンするコードの中で、
今スキャンしているコントロールがTextBoxなら、追加の処理を行う、
ということは実現できています。
これを、TextBoxに限定せず、一般のコントロールに対して統一的に
文字が入力可能なコントロールを選別する方法があれば知りたい、というわけです。
0729デフォルトの名無しさん2014/04/04(金) 16:42:21.56ID:QbEyL1Pb
そもそも入力できるコントロールなんて幾つもないだろ
0730デフォルトの名無しさん2014/04/04(金) 16:45:14.80ID:fbrPwcTM
>>728
そもそもなんでそんな面倒なことせにゃならんの?
UIが動的に変化するにしても、ターゲットとなるコントロールの正体が判らんとは、おかしいにも程があるだろ
0731デフォルトの名無しさん2014/04/04(金) 16:46:52.14ID:nYgZv8ve
入力可能というのをどうやって判断するのか
0732デフォルトの名無しさん2014/04/04(金) 16:48:15.24ID:XTcslJkb
統一的にという話ならUIElementにTextInputイベントがあるくらいだから
WPFのコントロールでテキスト入力不可能なものなんてないんじゃないの
0733デフォルトの名無しさん2014/04/04(金) 16:54:56.35ID:fbrPwcTM
Textプロパティがあるかで判断する方法も考えたが、
そもそもContentにも文字列設定可能だし
だからこんなこともできちゃうし・・・

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";
Title="MainWindow" Height="223.611" Width="375.521">
こんにちは
</Window>

ある意味WPF最強w
0734デフォルトの名無しさん2014/04/04(金) 16:58:20.60ID:eGYDDpSi
>>730
タブレットデバイス向けに、オンスクリーンキーボードを自動的に出したり引っ込めたりする必要があります。
WindowsStoreアプリなら、入力可能な部分にフォーカスが当たると自動的にオンスクリーンキーボードが出ますが
ある制約があって、WindowsStoreアプリではなく、デスクトップアプリとして実装する必要があります。
>>731
まさにそれが知りたいです。

>>729
これまでのご意見を総合すると、コントロールを明示的に指定する方法がシンプルでよさそうです。
0735デフォルトの名無しさん2014/04/04(金) 17:20:25.39ID:33nh4Dwt
入力可能な個所は必ずTextBoxまたはTextBoxBaseであると限定できるなら、
VisualTreeHelper あたりでどうにかできそうではあるけど…
ComboBoxのIsEditable=TrueはデフォTextBoxみたいだ

まぁ、限定できない数じゃないしコントロールの型で判定した方がいいな
0736デフォルトの名無しさん2014/04/06(日) 18:12:16.62ID:6q+0yI43
WPFのイベント・バブリングについて質問があります。
あるWindowの中に配置されているコントロールで、例えば、ボタンをクリックしたmousedownイベントは、
バブルアップして最終的にはそのWindowのmousedownイベントをも発火させると思っています。
しかし、ボタンをクリックしてもWindowのmousedownイベントのハンドラは発火しません。
どうしででしょうか?
0737デフォルトの名無しさん2014/04/06(日) 18:20:27.77ID:Z2CFn8dC
>>736
これのせい
http://msdn.microsoft.com/ja-jp/library/system.windows.routedeventargs.handled%28v=vs.110%29.aspx

そんなに難しい話ではない
Handledプロパティがtrueになって処理済とされたイベントは
特殊な方法で初期化されているイベントハンドラにしか通知されない
0738デフォルトの名無しさん2014/04/06(日) 18:28:31.15ID:6q+0yI43
>>737
ボタンのmousedouwnイベントを、最終的な親のwindowのmousedownイベントにまで届けるには具体的にどうすればいいのですか?
各コントロールのHandledプロパティはデフォルトでfalseのようなので、勝手に親に伝搬していくと思ってるのですがwindowにまで届きません。
0739デフォルトの名無しさん2014/04/06(日) 18:34:23.80ID:6q+0yI43
あれ?もしかしてPanelのHandledはデフォルトでtrue?
0740デフォルトの名無しさん2014/04/06(日) 18:37:57.90ID:6q+0yI43
PanelにHandledプロパティなんかなかった・・・orz
0741デフォルトの名無しさん2014/04/06(日) 19:16:49.40ID:iSI+gb3E
Buttonの場合は左クリックのMouseDownはたぶんOnMouseDownの時点で握りつぶすようだけど、
よく意図が分からん仕様だな。

MSDNには「一部のコトロールはそういう処理をする」とだけ書いてある。
0742デフォルトの名無しさん2014/04/06(日) 22:04:23.83ID:SA366w7Y
>>738
どうすればっていうのは737に書いてると思うのだけど
0743デフォルトの名無しさん2014/04/07(月) 11:21:09.55ID:OQ0TLFwv
>>742
ウィンドウのコンストラクタの中で
MainWindow1.AddHandler(MouseDownEvent, new RoutedEventHandler(mouseDownHandler), true);
ってやったら自作のmouseDownHanderが呼ばれました!さんくすこ!
0744デフォルトの名無しさん2014/04/07(月) 23:48:20.57ID:cV3kIsRb
WPF本格的に勉強したいんだが、いい本ない? 洋書でもいい
業務では1年ちょい使ってるが、職場に有識者いない感じ

ProWpf4.5とか評判良さそうだから興味あるが、誰か読んだ人いないか
0745デフォルトの名無しさん2014/04/08(火) 00:28:47.35ID:1/sEKcuY
>>744
本格的を実用的と取ると適切な本はないと思った方がいい

しっかり使うには基本のフレームワーク以外も使う必要があるけどそれについての本なんてない
海外のサイトなどを地道に見ていくしかないけど一人じゃ厳しい

何とかして実力者を見つけるか勉強会に出るぐらいかな
0746デフォルトの名無しさん2014/04/08(火) 00:51:54.73ID:KmEcitHT
>>744
まあWPFに限らず洋書の技術本なんてほとんど全部拾え(以下自粛
その本もいろんなところに落ちて(

まあこれなら合法的にタダで読める。
もっとも150ページ弱でWPFを解説しきれるはずもなく、中身スカスカだけど。
https://docs.google.com/viewer?url=http://www.syncfusion.com/Content/downloads/ebook/WPF_Succinctly.pdf

しかし、1000ページオーバーの洋書でもすべての重要項目をカバーしきれないのが
WPFの恐ろしいところ。
0747デフォルトの名無しさん2014/04/08(火) 01:30:30.31ID:a6XK4Xv5
洋書もサイトのヘルプに毛が生えた程度のものが多い感じだね。
結局はこの手の本って現場でモリモリ書いているような人が書いてないから
当たり障りの無いことしか書かれてないし実用性求めたらろくな本がないもんだけど
WPF関連は輪をかけて大した本が無い状況。
英語で良いならstackoverflow眺めながらモリモリ書くのがベストだね。
フレームワークとかもナマモノだしな。
07487442014/04/08(火) 08:53:16.39ID:XRLU8ip5
>>745-747
マジかー ありがとう
とりあえず洋書読んで、フレームワークもOSS多いし中身読んでって感じでいってみるわ
0749デフォルトの名無しさん2014/04/12(土) 13:10:29.79ID:lhtyBYQc
>>744
WPF Unleashedもおすすめだよ。
proよりもこっちの方が読みやすい英語だった。
あとはcodeplexとかで、いろんなコード見てみるのがいいんじゃないかな。
0750デフォルトの名無しさん2014/04/13(日) 15:36:54.29ID:zCF4EGvD
あああああwpf難しい
向いてないね俺
0751デフォルトの名無しさん2014/04/13(日) 15:45:43.08ID:mb1OfksF
WPFは時間の投資に対してリターンの少ない環境だとは思う
しかしディスプレイの高解像度化でDPI依存が辛いからWPFに移る予定
0752デフォルトの名無しさん2014/04/13(日) 16:24:45.66ID:x/KtMqk9
バインドの設定済みのxamlから、物凄くアバウトなVM雛形を吐いてくれるツールってないかな
まぁ、自力で書いてもそんな時間かからんが、既にあるならソレ使おう的なw
0753デフォルトの名無しさん2014/04/15(火) 11:56:27.24ID:7sxQZ0IC
>>749
Adam Nathanのやつだよね?
ストアアプリやる必要性からWPF含めてXAML本幾つか読んだんだけどこの人の本が一番いい具合に突っ込むところは突っ込みつつかつ全体を網羅してまとまってた希ガス。
0754デフォルトの名無しさん2014/04/16(水) 12:41:54.62ID:U8lFDcvm
MSの新CEO・・・?と一瞬思ったが、全然違った
CEOの名前が全然覚えられない
0755デフォルトの名無しさん2014/04/16(水) 19:05:52.10ID:81kPth3L
なんとかナデラだろ
日本人っぽい姓で覚えやすいw
0756デフォルトの名無しさん2014/04/16(水) 22:43:05.28ID:uN/tBaHz
>>753
そうそう。ProWPFもざっと読んだけど、Unleashedの方が分かりやすかった。
WPFを始めたばかりの人でも、この本はHowTo的なサンプルコードが一杯あって読みやすいんじゃないかな。
あと、こういう所でよくミスする、ってポイントの説明もあっていい感じ。
こんな本の和訳でも出れば、WPFももっと普及するだろうに、、、と本当思う。
0757デフォルトの名無しさん2014/04/17(木) 00:27:17.18ID:WOVbM93u
MSは普及させる気があるのか

OfficeアドインもHTML5+jsとなるとシルバーライトの二の舞か
0758デフォルトの名無しさん2014/04/17(木) 00:38:52.72ID:4cA3qYT/
むしろこんな筋が悪い技術普及してもらっては困る
0759デフォルトの名無しさん2014/04/17(木) 01:31:22.88ID:xO4Uc49B
>>758
だからと言ってHTML5は勘弁して欲しいわ
0760デフォルトの名無しさん2014/04/17(木) 01:38:59.02ID:az0Jg9EJ
javascriptとかいうゴミ
0761デフォルトの名無しさん2014/04/17(木) 01:51:03.70ID:5kGvZy5A
カッチリ冗長未完成を取るか、いい加減変態未完成を取るかか・・・
ひでぇ選択肢だ・・・
0762デフォルトの名無しさん2014/04/18(金) 22:25:02.42ID:aLn8JpVk
WPFのグラフィック本当に糞遅いな。

StremGemoetry使ってたった数千程度の頂点のPolylineを書いてるだけなのに
何で秒単位の時間が掛かるんだ?
GDI+ですらこんなの一瞬で終わるのに。

こんな性能じゃ何年たっても一向に普及しないのはむしろ当然だわ。
0763デフォルトの名無しさん2014/04/18(金) 22:36:18.34ID:QSQ7rns3
ベクターベースのUIを持ってる以上のものは期待しない方がいいな
ビットマップのImageSourceとかストレッチしないつってんのにアンチエイリアスかけるし
原寸表示してんのにニアなんちゃらとかいう特殊なオプションが必要って
0764デフォルトの名無しさん2014/04/19(土) 20:21:32.19ID:IBk9cZtN
ChromeやFirefoxみたいなタブ管理機能を備えたアプリケーションを作りたいのですがどうすればいいのでしょうか
0765デフォルトの名無しさん2014/04/19(土) 20:25:41.67ID:7yO113Ux
みたいなタブ管理ってどっからどこまでのことなのかまるでわからん
0766デフォルトの名無しさん2014/04/19(土) 20:35:26.81ID:IBk9cZtN
D&Dでタブを動かすことができる
タブをウィンドウに分離できる
タブの固定などができる
タブの下にUrlなどの情報が表示される
などです

ChromiumやFirefoxのソースコードで作ろうと思ってビルドで挫折したので馴れている.NETで作ろうと思ったわけであります
0767デフォルトの名無しさん2014/04/19(土) 20:44:46.03ID:ya8eWhKL
どうすればいいってそのへんの個別の要件を満たす作り方全部教えろってかw
せめてTabControlなり張り付けて問題にぶつかったらにしろと…
0768デフォルトの名無しさん2014/04/19(土) 20:50:28.06ID:IBk9cZtN
とりあえず一番上はネット上を参考に、一番下はタブ生成時にTabItemに挿入することで実装できました
タブの固定は優先度が低いのでそのうち実装する予定です
ただSimpleTabItemなどを参考にしましたが丸みを帯びたデザインにするのができません
0769デフォルトの名無しさん2014/04/19(土) 20:50:53.07ID:nSzj8sir
3,4番目を人に聞いてる奴に1,2番目の独自実装は無理
0770デフォルトの名無しさん2014/04/19(土) 21:46:26.00ID:pzsg7m6u
>>768
そういうのは自分でキャンバスとかにゴリゴリ乗っけたり描いたりしたほうがいいんじゃないのか…
0771デフォルトの名無しさん2014/04/19(土) 21:56:06.43ID:UQPJSFXx
>>768
SimpleTabItem って Blend のこれで合ってるかな?
http://msdn.microsoft.com/ja-jp/library/cc294894(v=expression.40).aspx

あってるなら、SimpleTabControl を配置して、そこにある TabItem を選択して右クリック。
「テンプレートの編集」-「現在の編集」で ControlTemplate の編集ができるから、そこで Border の CornerRadius を変更するだけ。
0772デフォルトの名無しさん2014/04/19(土) 22:31:29.02ID:IBk9cZtN
SimpleTabItemですが正確には、Xamlで書いてもうまくいかずに、ソースコード中でCornerRadiusを変更したBorderを入れましたが四画の中に四角が入りました
0773デフォルトの名無しさん2014/04/19(土) 22:44:36.25ID:wkJcdH8J
作れば?としか言いようがないなw
07747712014/04/19(土) 22:53:38.77ID:UQPJSFXx
>>772
そのコードは、おそらく ControlTemplate を変更してるんじゃなくて、単に Border を TabItem に入れてるだけじゃないかと。

Blend から SimpleTabControl を追加したなら、プロジェクトに "Simple Styles.xaml" ってのが追加されてるはず。
そのファイルを開いて x:Key="SimpleTabItem" を検索。
その何行か下にある <Border Margin="0,0,-4,0" x:Name="Border" ... にある CornerRadius="2,12,0,0" の数値を適当に変更してみて。

何を変更しているか意味が分からないなら、この辺のページを読んで。
http://msdn.microsoft.com/ja-jp/library/ms750613(v=vs.110).aspx
http://msdn.microsoft.com/ja-jp/library/ms745683(v=vs.110).aspx
http://msdn.microsoft.com/ja-jp/library/ee230084(v=vs.110).aspx
0775デフォルトの名無しさん2014/04/19(土) 22:56:31.30ID:IBk9cZtN
>>774
そういう意味ではなくて、動的にタブを追加しているためかわかりませんが、SimpleTabItemのデザインが適用されない or 適用方法がわからないです
07767712014/04/19(土) 23:13:33.39ID:UQPJSFXx
>>775
まだ手探りなのはわかるけど、まずは、>>774 の URL を読んでみて。
WPF はサンプルが全然少なくて、基本がわかってないと、しょっちゅうつまずくことになるよ。

それで、Style を適用させるには、前提として App.xaml に "Simple Styles.xaml" がマージされていることを確認。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Simple Styles.xaml"/>
...

あとは、Xaml から、こんな感じで全部の TabItem に適用させるか、
<Windows.Resources>
<Style TargetType="TabItem" BasedOn="{StaticResource SimpleTabItem}" />
...

もしくは、コードからこんな感じで Style を設定する。
var item = new TabItem {
Style = (Style)FindResource("SimpleTabItem")
};
07777712014/04/19(土) 23:17:42.98ID:UQPJSFXx
書き忘れ。

>>775
多分、動的に追加しているのが原因。
Blend から SimpleTabItem を追加すれば Style="{DynamicResource SimpleTabItem}" って自動で書いてくれるけど、
動的にやるなら >>776 みたいに自分で設定してやらないとダメ。
07787752014/04/20(日) 18:34:39.90ID:noaEY9Ib
有難うございます
できました
0779デフォルトの名無しさん2014/04/23(水) 01:18:12.29ID:Z6l2VC5P
NavigationWindowのTemplateをいじりたいのですが
ネットにあるサンプルを張り付けてもスタイルが反映されません。
何か原因はわかりませんか。

NavigationWindow.Templateに直接ControlTemplateを渡すと
とりあえず読み込むページが反映されるようです。
0780デフォルトの名無しさん2014/04/23(水) 09:20:41.34ID:GvqsLaip
>>779
その説明では、さっぱり分からない。もっと具体的に。
Template をどういじりたいの?ネットにあるサンプルってどれ?とりあえず読み込むページって?
0781デフォルトの名無しさん2014/04/23(水) 22:27:48.48ID:Z6l2VC5P
<NavigationWindow x:Class="WpfPage.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";
Title="MainWindow" Height="350" Width="525" Source="MainPage.xaml">
<NavigationWindow.Resources>
<Style TargetType="{x:Type NavigationWindow}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type NavigationWindow}">
<DockPanel Background="WhiteSmoke">
<TextBlock DockPanel.Dock="Top" Text="Header"/>
<TextBlock DockPanel.Dock="Bottom" Text="Footer"/>
<AdornerDecorator DockPanel.Dock="Top">
<ContentPresenter ClipToBounds="true" Name="PART_NavWinCP"/>
</AdornerDecorator>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</NavigationWindow.Resources>
</NavigationWindow>
0782デフォルトの名無しさん2014/04/23(水) 22:32:49.65ID:Z6l2VC5P
http://msdn.microsoft.com/ja-jp/library/aa970054(v=vs.90).aspx
このページを参考にしたのだけどこれだとスタイルが適用されません。

<NavigationWindow.Template>に直接ControlTemplateを渡して
ContentPresenterを{TemplateBinding Content}とすると一応期待した動作になります。
これが正しい解決なのか横着なのかもよくわかりません。
0783デフォルトの名無しさん2014/04/23(水) 23:52:30.02ID:GvqsLaip
>>782
http://stackoverflow.com/questions/431940/how-to-set-default-wpf-window-style-in-app-xaml
・TargeType の指定が間違ってる。NavigationWindow ではなく MainWindow が正解。型が一致してないと適用されない。
・NavigationWindow から派生する型で Style を使いまわしたい場合は、x:Key を使え。
0784デフォルトの名無しさん2014/04/24(木) 00:13:19.21ID:TPSxVWf5
>>783
できたよありがとう
Styleの外出しも参考になりました
0785デフォルトの名無しさん2014/04/24(木) 23:09:53.14ID:KITKQSDs
ユーザーコントロールを作って、それをウィンドウの中で使おうとすると
Visual Studioのデザイナで
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
とかいうエラーを出してプレビュー画面にエラーのスタックトレースが列挙されるのはどうにかなりませんか?
ちなみに実行しても何の問題も生じません。エラーで騒いでるのはVisutal Studioのデザイナ画面だけ。
0786デフォルトの名無しさん2014/04/24(木) 23:19:53.15ID:TNfn8SPs
どうせApplicationとかAssembly触ってんでしょ
http://msdn.microsoft.com/ja-jp/library/bb546934%28v=vs.90%29.aspx
0787デフォルトの名無しさん2014/04/24(木) 23:35:38.02ID:fWm8fXw6
>>785
コメントアウトを使って、どれが原因か確かめてみたら?
0788デフォルトの名無しさん2014/04/24(木) 23:46:03.98ID:6+qpQPlw
App.configに書いた設定読む処理が入ってたりとかするとアレになる
07897852014/04/25(金) 10:59:30.59ID:u5lUGuWK
親ウィンドウの位置を補正するコードをコメントアウトしてみたらデザイナのエラーは消えました。
コントロールでそんなことするなと言われればそれまでなんですが、どうしてもその処理は必要なので、
tryの中で呼んで例外を握りつぶして解決してやったぜ。ワイルトだろぉ?
0790デフォルトの名無しさん2014/04/25(金) 11:14:11.47ID:nFLk447L
はい、そういうスレじゃないんでね…
0791デフォルトの名無しさん2014/04/25(金) 11:16:15.91ID:TtkNide3
くせーなこいつ
0792デフォルトの名無しさん2014/04/25(金) 11:41:12.29ID:RiZFk07a
そこまで条件というか原因がわかっていてなぜ握りつぶすのか
0793デフォルトの名無しさん2014/04/25(金) 19:22:30.38ID:BeYqZeZk
デザインモードかどうか判定しろよ
07947852014/04/26(土) 21:42:24.05ID:cOmCdjvc
DesignerProperties.GetIsInDesignMode(this)
なるほどね
0795デフォルトの名無しさん2014/05/02(金) 17:36:10.65ID:4xxKAu7L
DrawingContext.DrawLineでドット単位のグラフを書いてるんだけど、RenderTargetBitmap.Renderすると、アンチエイリアスがかかっているのかぼやけた感じになったり重ね描きしたところがアルファブレンドしたような感じになってしまいます
ビットマップにスケーリングされないように描画するにはどうしたらよいのでしょうか?
0796デフォルトの名無しさん2014/05/02(金) 21:21:14.44ID:dPjFFZXQ
>>795
RenderOptions.SetBitmapScalingMode で
BitmapScalingMode.NearestNeighbor を指定すれば良いんじゃないかなぁ。
0797デフォルトの名無しさん2014/05/03(土) 00:27:40.84ID:pUvksEKj
WPF意外と使えるじゃん
今までゴミだと思ってて悪かったな
0798デフォルトの名無しさん2014/05/03(土) 12:43:51.56ID:BZBXW0bi
>>797
いつの間にいい女になってたんだって感じだな
こんなんだったらもっと早く付き合っておけば良かったと後悔
0799デフォルトの名無しさん2014/05/03(土) 13:09:00.76ID:60DmAUT2
外面だけの女だと思ったら、内面も柔軟でハイスペックな子だったという。
Formちゃんと同じ付き合い方だと合わなかっただけで。
0800デフォルトの名無しさん2014/05/03(土) 14:29:17.82ID:I7HZgmcz
>>798
もう俺は開発しつくしたわ
0801デフォルトの名無しさん2014/05/03(土) 18:52:02.87ID:/Id5A65T
>>796
ありがと、でもだめだった
コードからの指定だと利かないみたい
結局グラフのなかはwritablebitmapでやることにしました
0802デフォルトの名無しさん2014/05/04(日) 14:35:23.95ID:fQELNO7r
音声ファイルのリソース化がイマイチわからない
画像ファイルはpack://application:,,,/image/gazou.pngみたいな感じの文字列をUriに指定したら読み込めるんだが、
mp3で同じ事しても再生されてくれない、ちなみにMediaPlayerでやってる
ただ絶対URIで指定すると再生してくれるんよ、もしかして画像と音声じゃ指定の仕方とかファイルの起き方とかが違う?

画像
BitmapImage m_bitmap = null;
filename = "pack://application:,,,/image/gazou.png";
m_bitmap.UriSource = new Uri(filename);

音楽
MediaPlayer player = new MediaPlayer();
String soundfile = "pack://application:,,,/sound/test.mp3";
player.Open(new Uri(soundfile));
0803デフォルトの名無しさん2014/05/04(日) 21:38:35.20ID:izVfMrBs
MediaPlayerやMediaElementは物理ファイルじゃないと扱えないし
確かpackスキーム自体扱えないはず
0804デフォルトの名無しさん2014/05/23(金) 23:18:22.03ID:vmjDfDxI
.net3.5でリボンを使おうと考えていますが以下のコードで
Windowの右側と下側に黒い縁が入ってしまいます。
どこを修正すればよいでしょうか。

<r:RibbonWindow x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";
xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
Title="MainWindow" Width="400" Height="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<r:Ribbon Grid.Row="0"/>
<Grid Grid.Row="1" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TreeView Grid.Column="0" />
<GridSplitter Grid.Column="1" Width="5" ShowsPreview="True"
HorizontalAlignment="Center" VerticalAlignment="Stretch"/>
<Grid Grid.Column="2">
<TextBox/>
</Grid>
</Grid>
</Grid>
</r:RibbonWindow>
08058042014/05/23(金) 23:23:42.80ID:vmjDfDxI
ちなみにOSはWindows8.1です。
またRibbonWindowではなく普通のWindowにすると黒い縁は消えます。
ただしクイックアクセスツールバーはタイトルバーから独立します。
0806デフォルトの名無しさん2014/05/24(土) 23:12:25.97ID:xLbzThu2
謎。もっと最小のXAMLで、RibbonWindowタグのみでも出るから…
0807デフォルトの名無しさん2014/05/25(日) 14:00:32.77ID:OQ+TaJO4
OS毎の基幹テーマと相性悪いんじゃね
Win8だと4.5の標準リボンあるし、まああれも出来悪いままだが
0808デフォルトの名無しさん2014/05/27(火) 13:10:53.85ID:qiFpmg2w
WPFは死にました
マイクソソフトの次回作に御期待ください
0809デフォルトの名無しさん2014/05/27(火) 15:01:17.53ID:MyBEMO4q
今だWPFは人類最強のUIフレームワークなんだが(´・_・`)
0810デフォルトの名無しさん2014/05/27(火) 15:19:24.90ID:D6t3bmO9
今だWPFは人類最強のメモリリークフレームワークなんだが(´・_・`)
0811デフォルトの名無しさん2014/05/28(水) 00:01:18.99ID:OhG7X8yk
まあストアアプリウィンドウ表示がどんなもんかだな
0812デフォルトの名無しさん2014/05/28(水) 00:44:39.84ID:yK8N9r8P
あんなの期待する方がどうかしてる。
ないよりマシ以上の意味があるわけない。
0813デフォルトの名無しさん2014/05/28(水) 03:49:15.67ID:4bzEKq86
いや、ぶっちゃけ今でも新規案件・リプレース共にWinFormsなんだよな
Form/WPFの熟練者って9:1くらいの割合なんだよな、チーム仕事する以上これじゃ採用できないよ
プロジェクト毎にチーム組織して終わったら解散、ずっとメンテもできないし
WPFを習熟するまで遊んでられるほど余裕あればいいけどまぁないよね
あえてWPFに熟練してないメンバーがあえてそこの実装にリソース割く意味ないんだよね
なによりWPFはFormと比較してパフォーマンスが悪すぎる
0814デフォルトの名無しさん2014/05/28(水) 07:31:13.22ID:zVPVrg22
そんなの10年は聞いてるから
もう少し別の話はないのかボケ老人よ
0815デフォルトの名無しさん2014/05/28(水) 10:40:46.55ID:EV+xsXSJ
ストアアプリは酷いのばっかりだよ・・
0816デフォルトの名無しさん2014/05/28(水) 17:18:55.05ID:p7sTJoTy
それでもWPFより先あるだろ
0817デフォルトの名無しさん2014/05/28(水) 18:08:55.68ID:6RxarYIU
http://dev.live.com/
http://gihyo.jp/dev/serial/01/wl-sdk
0818デフォルトの名無しさん2014/05/28(水) 20:03:40.02ID:8pIXW7AP
VisualStudioのフレームワークを公開してくれたらなぁ。
それでMFCのテンプレートみたいに手軽にそれなりのアプリを組み立てられるようにしてくれたらいいのに。
0819デフォルトの名無しさん2014/05/28(水) 20:23:47.83ID:S21b1tjy
ストアアプリもXAMLで行けるんでそ?
0820デフォルトの名無しさん2014/05/28(水) 20:28:12.31ID:pdzwiaYa
>>819
いけますよと。
けどいろいろ削られててWPFで使えるテクニックが使えないこともままあるけど。
0821デフォルトの名無しさん2014/05/28(水) 20:31:10.91ID:aBbF8Esa
今後はストアアプリがメインだからな。
0822デフォルトの名無しさん2014/05/30(金) 01:33:42.65ID:275MLMqb
ストアアプリもまだ別物になるだろうけど
XAMLをどれだけ引っ張るのかが気になるわ
0823デフォルトの名無しさん2014/05/30(金) 01:59:15.60ID:pkh47Hh7
Surfaceは気合い入れたなって感じなのにWPFのやる気のなさはなんだ!
0824デフォルトの名無しさん2014/05/30(金) 05:24:30.86ID:NSxBtZrn
>>823
そのまんま。
0825デフォルトの名無しさん2014/05/30(金) 06:26:25.40ID:XChbjR+3
>>823
これからはユニバーサルアプリなんで。
大して変わらんよ。
0826デフォルトの名無しさん2014/05/30(金) 07:14:48.77ID:XlqXV0+b
XAMLは捨てる気なさそうで大勝利
0827デフォルトの名無しさん2014/05/30(金) 08:35:39.26ID:RH/4zgbb
XAMLのせいで糞アプリになる
0828デフォルトの名無しさん2014/05/30(金) 14:07:54.57ID:tdeOqv8K
MSが魔改造したからな
0829デフォルトの名無しさん2014/05/30(金) 14:17:15.56ID:hRCXFq8/
窓化出来ればUniversalAppでいいかな
0830デフォルトの名無しさん2014/05/30(金) 14:48:38.62ID:6FbkfSIP
>>827
いーからXAMLよりイイフレームワークよろ
0831デフォルトの名無しさん2014/05/31(土) 01:40:35.30ID:CeJidx2c
デスクトップやサーバー開発でフロントエンドにWPF使うメリットがないんだよな
すでにWPFに熟達していて学習コストないならいいけどそんな奴Win開発の何パーセントだよ・・・
OS X(Cocoa)とiOS(Cocoa Touch)のようにセグメントがまったく違うならわかるよ?
なぜデスクトップでWPF(XAML)なのか、しかもパフォーマンスが悪い、コントロールも足りない、バグも放置
デスクトップ・サーバーでWPF流行る理由が何一つないね、JavaもJavaFX2(FXML)始まる前から終わってるしね
なぜXMLなのかわからない、そもそも俺はウェブ含めてDOM(JS)が大嫌いなんだが
0832デフォルトの名無しさん2014/05/31(土) 02:10:11.10ID:tLy9tu9w
>>831
泥でも林檎でもXML使ってんじゃん(´・_・`)
0833デフォルトの名無しさん2014/05/31(土) 05:36:31.91ID:RIl8bhMB
馬鹿はスルー
0834デフォルトの名無しさん2014/05/31(土) 06:53:31.57ID:inxuk/DM
でも、コントロールが足りない。表示品質が低いのは事実でしょ。スマホ以下の表示品質ってどうなのよ。
0835デフォルトの名無しさん2014/05/31(土) 07:10:14.16ID:062NfEib
XAMLデザイナーがポトペタだけで完結してくれるようにもっと頑張ってくれれば
馬鹿でも使いこなせたのに

XAMLは静的だろうけど、デザイナーまで静的でどうするみたいな
0836デフォルトの名無しさん2014/05/31(土) 09:28:26.27ID:FdQ8Co+W
nuget見ててもトレンドはASP+jQuery
WPFなんて存在感ないっすよ
酸素より薄い

WPFのタグついてるライブラリ370個しかないのに
JQueryはJQueryだけで460個もある
0837デフォルトの名無しさん2014/05/31(土) 09:50:01.84ID:RP2ZCCFg
WPF単体で見るとそう悪くは見えないんだけど、
ブラウザのレンダリングエンジンの品質と比べると悲しくなるな

MSのやる気のなさがはっきりと表れてる
0838デフォルトの名無しさん2014/05/31(土) 10:49:16.26ID:MIrX7ErA
本当にやるきが無いのが原因だろうか?
「技術力が無い」の間違いではないだろうか?
0839デフォルトの名無しさん2014/05/31(土) 11:05:20.94ID:6LzyMI+6
それではまるで今まで技術力でのし上がってきたみたいじゃないか
0840デフォルトの名無しさん2014/05/31(土) 11:58:20.07ID:FdQ8Co+W
とっつき悪いからだろ
間口がせまいと馬鹿が入ってこなくていいとか強がるアホがいるが
人口こそがパワーの本質やねん
0841デフォルトの名無しさん2014/05/31(土) 12:04:32.03ID:tLy9tu9w
まぁストアアプリの方にWPFも寄せてくるんだろうね
0842デフォルトの名無しさん2014/05/31(土) 14:18:00.78ID:orufI9PA
いちいちポップアップで最前面に出て来て自己主張するアプリが多すぎるのがWindowsの糞なところ
他の作業しててEnter押した瞬間に関係ないダイアログのOKボタン押されたりして頭真っ白になる
0843デフォルトの名無しさん2014/05/31(土) 14:19:37.89ID:lYWWaR2/
とっつきが悪いのもあるけど、

パフォーマンス
柔軟性が高いと喧伝されてるが実際は柔軟性はWindows Formよりずっと低い

この2つが大きい。
0844デフォルトの名無しさん2014/05/31(土) 14:26:58.82ID:5YmkD3+U
DataTemplateとContentPresenterの組み合わせが楽しい
0845デフォルトの名無しさん2014/05/31(土) 14:27:25.75ID:l4Ub8RqP
WPFがFormsより柔軟性低いとかないわ
MDIの話でもしてるのか
0846デフォルトの名無しさん2014/05/31(土) 14:45:24.58ID:6LzyMI+6
>>842
Vista以降だとノロノロとアニメーションしてくれるから防げる
0847デフォルトの名無しさん2014/05/31(土) 14:46:12.89ID:YDBteSYu
>>843
柔軟性? 真逆じゃん。
0848デフォルトの名無しさん2014/05/31(土) 14:55:25.31ID:lYWWaR2/
>>845
すまん今はもうWPF触ってないからうろ覚えだけど、
後発だからフレームワークの枠内でのデザインの柔軟性は当然高くなってるけど、
Windows FormだったらいざとなったらWin32API呼んだりウィンドウメッセージを
直接処理すれば出来たようなことがどうやっても出来なかったりやたら難易度が高かったりして
WPFは使いものにならないと思ったことが何度かあった。
0849デフォルトの名無しさん2014/05/31(土) 15:10:52.43ID:tLy9tu9w
それこそ今までのやり方が出来ねーだろプギャーって言ってるだけじゃん。

何がしたいのかわからんけどWPFの作法でやれば解決策あったんじゃない?
そのプラットフォームに沿ったやり方しないと無理なのもあるだろうしね。
iPhone向けでウィンドウ重ねてくれと言ってるようなもんでは。
0850デフォルトの名無しさん2014/05/31(土) 15:25:57.93ID:lYWWaR2/
WPF使ってる時点で「今までのやり方」じゃないと思うんだけどね。

当時は散々調べつくした上の結論だから、こっちの知識や能力不足じゃなく
WPFの本質的問題だと思う。
0851デフォルトの名無しさん2014/05/31(土) 15:30:53.24ID:5YmkD3+U
Messengerパターンなしの時代の人かな
0852デフォルトの名無しさん2014/05/31(土) 15:46:27.40ID:g2AZ3MPL
>>851
標準でもできるようになったん?
0853デフォルトの名無しさん2014/05/31(土) 16:56:09.75ID:inxuk/DM
>>849
問題は、出来る方法があるとかないとかじゃなくて、WPFの作法に優位性があるかどうかでしょ。
0854デフォルトの名無しさん2014/05/31(土) 17:01:12.49ID:l4Ub8RqP
柔軟性の話じゃなかったのか
0855デフォルトの名無しさん2014/05/31(土) 17:03:59.92ID:l4Ub8RqP
結局WPFが優位になる領域ではWPFを採用するだけの話だと思うけど
0856デフォルトの名無しさん2014/05/31(土) 17:23:40.55ID:g2AZ3MPL
そこって一体…
0857デフォルトの名無しさん2014/05/31(土) 19:04:03.14ID:FdQ8Co+W
ダークマターでござい
0858デフォルトの名無しさん2014/05/31(土) 19:33:58.68ID:BN0D5RiV
>>857
理論的にはあるはずだが誰も見つけられていない
って使い物にならないってことじゃないのw
0859デフォルトの名無しさん2014/05/31(土) 20:34:43.08ID:2Ooe6qmU
>>853
前フォームで作ってて最近はストアアプリメインだけどレイアウトシステムも画面の重ね合わせやコレクションに対する表示方法にしてもMVVMに基づくコードの分離もフォームよりイイと思うけどなぁ

iPhone開発も最近してるが、IBもストーリーボードもびみょいのでXAMLライクにレイアウト出来る仕組み作って、それとMVVMCross合わせて開発して便利に思ってる。
0860デフォルトの名無しさん2014/05/31(土) 23:21:51.31ID:ZrdYw0C6
FlowDocumentが糞すぎるのがいかん
0861デフォルトの名無しさん2014/06/01(日) 00:18:28.05ID:F0mL7Lp4
WPFがーって言うかXAMLが・・・いや違うな・・・VSが問題なんだわ
XAML・ASP・Razorのコーディングって補完効かなさすぎてXcode使ってる錯覚に陥るw
0862デフォルトの名無しさん2014/06/01(日) 04:20:38.90ID:xvg552Op
データバインディングは自分で両側作れば補完なんてなくても打てると思うがなあ
間違ってれば実行時にトレースでるし

あとASP.NET MVCは型付きで作ればIntelliSense効く
0863デフォルトの名無しさん2014/06/01(日) 12:01:48.17ID:AGrJAw/q
ストアアプリでしか触ってないが補完十分じゃね?
0864デフォルトの名無しさん2014/06/02(月) 19:56:55.42ID:C+eUgpih
Drag and DropでDrop先のエクスプローラ/デスクトップのパスを取得するにはどうしたらよいのでしょうか
0865デフォルトの名無しさん2014/06/02(月) 20:50:57.84ID:7TN/u+Qn
>>864
これってWPFに関する質問なの?
0866デフォルトの名無しさん2014/06/02(月) 20:56:20.69ID:C+eUgpih
少なくともAPIはWPFとFormsで異なっています。
どちらでも出来るかは結果がはっきりしていなければわかりません。
0867デフォルトの名無しさん2014/06/02(月) 21:44:16.38ID:YT9YzNa9
結論から言うと、WPFやFormsのAPIでは無理
どちらでもドロップ先に関する情報は取得できない
0868デフォルトの名無しさん2014/06/02(月) 23:00:53.09ID:C+eUgpih
>>867
それは残念です。WAはいくつか見かけたのでそちらを試します。
ありがとうございました
0869デフォルトの名無しさん2014/06/03(火) 22:53:50.88ID:m0zdoCOe
Visual Studio 2013でWPFのTextBoxを継承した独自クラスを利用できません
自分の作り方がわるいのかとも思って調べて↓のサイトのプロジェクトを開いてみたところ
http://pro.art55.jp/?eid=919835

名前 "InfoTextBox" は名前空間 "clr-namespace:Art55.WpfControlLibrary;assembly=Art55.WpfControlLibrary" に存在しません。
というエラーが出たので互換性の問題なのでしょうか?
0870デフォルトの名無しさん2014/06/03(火) 23:02:44.37ID:iLjoT6a+
WebBrowserコントロールをページ閲覧とかのためじゃなくて、
非表示のまま裏でログインしてデータ拾うために使ったりしたいんですけど、
コントロールってただnewしただけだと動かないです?
Loadedがいつまでたっても走らないんですけども…
こういうものはXAMLなり何かしらでウィンドウ上に配置しない限り動かないんですかね…?
0871デフォルトの名無しさん2014/06/03(火) 23:11:12.33ID:kzI/DT6H
>>869
ソース見てないけど一度ビルドしてみた?
0872デフォルトの名無しさん2014/06/03(火) 23:23:29.30ID:iOVcEbhq
>>870
WPFでは基本的に表示されてないものは実体は作られない。
大抵はApplyTemplate()すると非表示で実体が出来るがWebBrowserでやったことはないなあ。
0873デフォルトの名無しさん2014/06/04(水) 00:24:39.77ID:Oker4VA2
WebClient か WebRequest じゃアカンの…?
0874デフォルトの名無しさん2014/06/04(水) 00:26:35.41ID:OrBvmunz
>>872
ApplyTemplate()やってみたんですけど、やり方が悪いのかちょと上手くいかなかったです。でもありがとうございます。
おとなしく実体を作ってからVisibilityをHiddenにするのが早いですかね…
なんかこう、終始見えないものをレイアウト上に配置するのがちょっと抵抗あって。
0875デフォルトの名無しさん2014/06/04(水) 00:29:49.61ID:OrBvmunz
>>873
HttpWebRequestで実装できればそれに越したことはないんですが、何故かセッションが上手く維持できなくて…
ログイン後にCookieContainerを使いまわすってのは知っては居るんですが、どうにもうまくいかないので、
もういっそ見えないブラウザを作って直接遷移させようという魂胆です。なので既に元々が妥協案ではあります…。
0876デフォルトの名無しさん2014/06/04(水) 06:58:29.90ID:ULqbbST8
>>871
ビルドしてみたら動きました

WPFの自作クラスはビルドしないと動かないのか
0877デフォルトの名無しさん2014/06/04(水) 07:13:00.20ID:YCCf2Rtl
デザイナで未ビルドのクラスが認識されないのはFormsも一緒
0878デフォルトの名無しさん2014/06/04(水) 08:43:09.93ID:g5VriG8B
>>875
どこのサイト?
0879デフォルトの名無しさん2014/06/11(水) 07:06:14.59ID:KjRV8XhA
質問なんですがマウスカーソルが重なるとCanvas内のGridをCanvasの端ぴったりに
持っていくようなコントロールテンプレートを作りたいのですがどうしたらいいでしょうか
下のコードではうまくアニメーションしてくれません

<ControlTemplate TargetType="Button">
<Canvas x:Name="Container" Background="Black">
<Grid x:Name="Label"><ContentPresenter /></Grid>
</Canvas>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimationUsingKeyFrames Duration="0:0:0.1" Storyboard.TargetName="Label" Storyboard.TargetProperty="(Grid.Left)">
<SplineDoubleKeyFrame Value="{Binding ElementName=Container, Path=ActualWidth}" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</ControlTemplate>

詳しい方何卒よろしくお願いします
0880デフォルトの名無しさん2014/06/11(水) 08:15:32.56ID:KjRV8XhA
すいません自己解決しました
Freezableオブジェクトというものらしく、>>879のXAMLの場合
うまくキーフレームに値をバインドできないようです(詳しいことはわかりませんでした)
代わりにイベントトリガでストーリーボードを開始するようにし
期待したアニメーションを作ることができました
お騒がせしました
0881デフォルトの名無しさん2014/06/25(水) 13:31:47.50ID:KF9coz4T
質問です。

2chのスレッドのような大きな(装飾を含む)ドキュメントをRichTextBoxに読ませると、描画にかなり時間が掛かってしまいます。
今は苦肉の策として、1レス毎にVirtualizingStackPanelを使ったListView内にRichTextBoxを配置して、表示されたレスのみ描画してるのですが、今度はスクロールが不自然になってしまいました。

大きなドキュメントを読み込む場合にはWebBrowserを使うべきなのでしょうか?
それともWinFormのRichTextBoxを叩くべきなのでしょうか?

こういった場合の対処法について皆さんのご意見を伺いたいです。よろしくお願いします。
0882デフォルトの名無しさん2014/06/25(水) 19:54:33.57ID:oszTg7Ln
レスごとに仮想化
0883デフォルトの名無しさん2014/06/25(水) 21:18:40.48ID:grOUgCUU
タブレットで動作させるためのアプリ(Windowsストアアプリではなくデスクトップアプリ)を作っています。
scrollviewerの中にgridを配置して、そのgridの中にbuttonやtextboxなどを配置しています。
scrollviewerの中のbuttonがまれに反応しないという現象が起きており、どうやら、buttonを押した後に
タッチ位置がズレて、スクロールのイベントが起きてしまい、buttonのclickイベントが無視されてしまっているようです。
buttonが押されたら、scrollviewerのスクロールイベントを無効化するような方法があれば問題を解決できそうですが
調べてもそういう方法があるのかないのかもわかりませんでした。
こういう場合はどう対処するのが良い方法でしょうか?
0884デフォルトの名無しさん2014/06/25(水) 21:21:51.99ID:DArBXCcF
ボタンのPreviewMouseDownあたりで捕まえられないか?
0885デフォルトの名無しさん2014/06/25(水) 21:26:43.48ID:FTcNgndA
タッチだからMouseじゃなくてTouchの方だな
Previewの方じゃなくてもButtonのTouchDownでHandledしてしまえば親には行かないと思うけど
0886デフォルトの名無しさん2014/06/25(水) 21:28:13.48ID:grOUgCUU
>>884
おおなるほど。
MouseDownが起こる前にscrollviewerのscrollイベントを無効化するという戦略ですね。
明日、試してみます。
ヒントありがとうございます。
scrollイベントを再び有効化するタイミングをどうするかが難しそうですが
ボタン無反応の問題を解決する糸口がつかめたような気がします。
0887デフォルトの名無しさん2014/06/25(水) 21:31:23.98ID:grOUgCUU
>>885
いま、TouchDownはなにもいじってません。
Clickイベントしか注目してませんでした。
TouchDownを捕まえてHandledをtrueにするというのも試してみます。
これもいけそうな気がします。
08888832014/06/26(木) 13:25:11.27ID:SANvaThA
Clickイベントではなく、TouchDownイベントを捕まえるようにしたところ、
スクロールイベントが起こる前に処理を行うことができるようになり、
ボタン無反応問題が解消しました!
ただ、VisualStudioのデバッグ実行で、マウスクリックによるボダン操作が行えなくなったので
Clickイベントも一応捕まえておくべきかもしれません。
ありがとうございました!
0889デフォルトの名無しさん2014/07/04(金) 20:46:04.72ID:ossnMFnX
OxyPlotというコントロールを試してみているんだけど、これを張り付けたUserControlを
印刷しようとすると白いままで何も印刷されないんだけど何が原因だろうか・・・。
https://oxyplot.codeplex.com/discussions/532065
これと同じ様な話だと思うんだけどこのコードと同じ物を試しに作ってもダメだった。
.NET Frameworkは4.5.1デス
0890デフォルトの名無しさん2014/07/14(月) 19:36:27.95ID:LgL6Dx/P
プログラミングWindows 第6版はXAML入門として役に立ちますか?
WPFの足掛かりにと思っているのですが
0891デフォルトの名無しさん2014/07/14(月) 20:16:28.94ID:yQEY2zvH
なるわけないと思うけど、まあ買えば分るさ
0892デフォルトの名無しさん2014/07/14(月) 20:24:01.29ID:duwxnkfh
世界は君のレビューを待ってるんじゃないか
0893デフォルトの名無しさん2014/07/31(木) 22:20:51.44ID:4d6FEfqA
プログラミング Windows 第6版 第1章 WPF編
http://blogs.msdn.com/b/shozoa/archive/2014/07/24/using-programming-windows-chapter1.aspx
0894デフォルトの名無しさん2014/08/08(金) 20:13:05.85ID:UqEidHMo
結局Livetってどうなったん?ページ死にっぱなしだし飽きて放り投げて終了?
ドキュメントもろく整備されてなかったし他の人に使ってもらおうと代物ではなかったか・・・
0895デフォルトの名無しさん2014/08/08(金) 20:18:00.05ID:tBhvzAFA
懐かしい名前だ。あの頃を思い出すよ。
0896デフォルトの名無しさん2014/08/08(金) 20:39:32.31ID:ZjRl4rpx
長いもの、大きいものに巻かれるのが一番だなw
0897デフォルトの名無しさん2014/08/08(金) 21:32:19.35ID:zQrgSKZs
自分で全部用意したほうが楽しい
0898デフォルトの名無しさん2014/08/08(金) 21:59:28.81ID:IFQmP97J
まあ国内だと足を引っ張る人ばっかりだし(笑)、かといって外人からは
完全無視でウィキペディアにも乗ってないし、あれじゃモティベーション続かないよね。

せっかく貴重な時間と労力割いて作ったんだからもうちょっと広める方の努力もしたらいいのにと
余計なお世話ながら思ったけど、作者の人が麻布高校出身だってどこかで読んだ時に
なんか腑に落ちるものがあったw
0899デフォルトの名無しさん2014/08/09(土) 00:21:37.64ID:xkv1+mp1
7月末あたりに見た時はページ復活してたんだけどな。
0900デフォルトの名無しさん2014/08/09(土) 15:23:27.36ID:gs8XG1kQ
もう1,2年前くらいから、消えたり復活したりはしてるけど
肝心の内容は何も更新されてないしね
0901デフォルトの名無しさん2014/08/11(月) 12:31:07.71ID:WlvU5O+H
ページ放置については、MVVMとLilvetの啓蒙意思を喪失したと受け止められてもしょうがないね
代わりに誤った見解のページが上位にヒットして、誤解が普及されるのは困り者だがw
0902デフォルトの名無しさん2014/08/11(月) 12:49:28.59ID:LZcDhd6q
MVVMがすでにもうアレなので僕は許した
0903デフォルトの名無しさん2014/08/11(月) 19:44:42.44ID:xndKsq76
JavaScriptの方で普通に広まっちゃった認識だが
0904デフォルトの名無しさん2014/08/12(火) 06:30:07.84ID:mwrwIBg8
prismでだいたい間に合っているから将来性考えると選びにくいよね
0905デフォルトの名無しさん2014/08/12(火) 10:11:49.29ID:3sbW9r/0
おらMvvmcrossでまにあっとる。
ストアとiPhoneのしか作ってないけど
0906デフォルトの名無しさん2014/08/12(火) 21:17:19.47ID:CKNk0OGb
そもそも案件だとオレオレフレームワーク()かPrismの二択だからな
Livetとか何それ?って言われるわ、まぁ俺もほとんど触ってないけどw
0907デフォルトの名無しさん2014/08/15(金) 16:48:38.72ID:U3CRmcdb
DataGridのヘッダ部分を動的に書き変えたい(絵を出したい)んだけど、どうすればいいんでしょう。
今は下のようにイベントハンドラ設定してハンドラに来るsenderを(Canvasとして)拾い、それを使って描いてるんだけど
この方法、何か違うような気がして…。一発CV_HEADERでアクセスする方法とかないものでしょうか

<DataGrid>
 <DataGrid.Columns>
  <DataGridTextColumn Width="*">
   <DataGridTextColumn.HeaderTemplate>
    <DataTemplate>
     <Canvas Name="CV_HEADER" Loaded="CV_HEADER_Loaded"></Canvas>
(以下略
0908デフォルトの名無しさん2014/08/15(金) 22:48:17.03ID:FCncTeuP
ヘッダに動的に絵を書き換えたいなら、こんな感じでいいんじゃないの
HeaderImageはコードで描いた画像データのプロパティね

<DataGridTextColumn.Header>
<Image Source="{Binding HeaderImage,ElementName=window1}"/>
</DataGridTextColumn.Header>
0909デフォルトの名無しさん2014/08/16(土) 17:31:52.06ID:3j+d45Bg
>>908
ありがとう。
今回は1枚じゃなく複数(枚数不定)のリソースを表示する必要があって…。
(複数の画像ファイル(重ならないけど座標不定) + Line)
その場合は予め合成した1枚絵を作っておくってのがWPFの流儀なんでしょうか
0910デフォルトの名無しさん2014/08/16(土) 19:39:49.49ID:M8/Btg5U
WindowにListBoxを貼り付けてWindow.xaml.csに
var style = new Style(typeof(ListBoxItem));
listBox.ItemContainerStyle = style;
listBox.ItemContainerStyle.Setters.Add(new EventSetter(ListBoxItem.PreviewMouseMoveEvent, new MouseButtonEventHandler(this.PreviewMouseMove)));
void PreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e) {}
とすると

型 'System.ArgumentException' のハンドルされていない例外が PresentationFramework.dll で発生しました
追加情報:ハンドラーの型が無効です。
っと例外発生してしまうんですが、なにか間違ってるんでしょうか。

XAMLで記述するとエラーにならないんですがC#コードで書きたいんです。
0911デフォルトの名無しさん2014/08/16(土) 20:13:16.38ID:M8/Btg5U
ああっ
たんじゅんにエラー通りに
MouseButtonEventHandler > MouseEventHandlerでした
0912デフォルトの名無しさん2014/08/17(日) 09:23:09.52ID:5jFEjhFB
>>909
VMで、コードでスタックパネルにイメージを入れて、其のプロバティーをHeaderにバインドしたらうまくいかないかな?
0913デフォルトの名無しさん2014/08/17(日) 12:36:52.12ID:eYLBYQcd
>>909
コンバーター使えよ。
0914デフォルトの名無しさん2014/08/18(月) 09:14:40.34ID:BrKZhWb1
>>909
HeaderをItemsControlなりにすればいいだろ
0915デフォルトの名無しさん2014/08/22(金) 07:32:28.36ID:G/KhijjP
アルファブレンディングについてなんですが
アルファ値128で書いた絵をアルファ値0の
rectangleで一部を消したい場合ってどうすればいいのでしょうか?
0916デフォルトの名無しさん2014/08/22(金) 07:57:47.80ID:c+MP2XXJ
>>915
OpacityMask
0917デフォルトの名無しさん2014/08/22(金) 12:09:56.04ID:G/KhijjP
>>916
おおお
ありがとうございます!
0918デフォルトの名無しさん2014/08/22(金) 20:56:46.84ID:BTUXPhBo
WindowsデスクトップアプリケーションはWPFに進むのか?
ttp://www.grapecity.com/tools/info/wpf/
0919デフォルトの名無しさん2014/08/23(土) 12:42:57.35ID:WJBIUJVr
進まない

そこの会社のHTML5コンポーネント群を見ろ
GUIはもうHTMLでいい
0920デフォルトの名無しさん2014/08/23(土) 14:56:02.78ID:sLXAwLj/
これからは(というかとっくに)Webばかりになるのは誰の目にも明らかなのに、
今更デスクトップのネイティブアプリとか言ってる時代錯誤な奴が使うのはWPFではなくWinFormsだよ
0921デフォルトの名無しさん2014/08/23(土) 15:42:12.35ID:qd6ZCp8I
HTML5がくるっていってどのぐらいかね。
開発者的にはHTML5で作るメリットは何もないし、いろんなとこで動かせるメリットはあっても結局パフォーマンスとかデバイス・プラットフォームに最適化出来ないとかでネイティブに対する需要は亡くならんよ。しばらくは。
0922デフォルトの名無しさん2014/08/23(土) 15:55:30.32ID:fsDPzwe+
と10年遅れが申してます
生暖かい目で見守ってください
もうじき死にますので
0923デフォルトの名無しさん2014/08/23(土) 21:23:56.81ID:hPpI01dm
>>920
どうだろうね?単一の技術で全て賄えるとは思えないけど。HTMKだけが勝者にはならないことに一票。
0924デフォルトの名無しさん2014/08/23(土) 21:54:13.82ID:jO0zpBoJ
むしろWebというかHTML5に過剰な期待を持ってる人の方が2周遅れでしょ。
認識が5年はずれてるよ。
0925デフォルトの名無しさん2014/08/23(土) 22:14:47.48ID:JJDGD5m1
などと前世紀から何か息巻いた声が聞こえますが
イヤーピースするなりして流して下さい
もうじき歴史の彼方に消え去るはずです
0926デフォルトの名無しさん2014/08/23(土) 22:31:13.29ID:NSY3QuJK
負け組って惨めだよね
セガ陣営とかHD DVD陣営とかね
負け組になったことを認められず擁護してる奴を左団扇で嘲笑うのは格別だ
0927デフォルトの名無しさん2014/08/23(土) 22:37:01.34ID:4FG+/bwK
RIAって言葉も聞かなくなって久しい
0928デフォルトの名無しさん2014/08/23(土) 23:43:29.58ID:hPpI01dm
>>925
そうだね。5年後に答え合わせしようね。
0929デフォルトの名無しさん2014/08/24(日) 12:36:51.20ID:Zfgc38d2
要件に合わせてアーキテクチャを選択するだけだろ
クラウドもしくはオンプレミスとクラウドのハイブリッドで顧客にあわせてタブレット・スマホ・デスクトップに提供したいならASP.NET MVC + EF + WCF or Web APIになるんだからUIはHTMLになる
タブやスマホが要件でないならWinFormsかWPFがメンバも慣れてる人が多くて効率も良い
そもそもWPFでどうやってスマホやタブに提供するんだ、プラットフォーム毎にクライアント開発するのか?個々人の主観は別だろ、予算的に承認されないよ
0930デフォルトの名無しさん2014/08/24(日) 13:16:50.22ID:l/oNlGJb
どこでも動かしたいならHTMLでいいだろうけどドロップボックスとかがネイティブ作ってる時点で何か差があるんだと理解しろ。
差が気にならない状況ならいいんじゃね?
0931デフォルトの名無しさん2014/08/24(日) 13:38:44.02ID:zCypF7j0
業務用のタブレットアプリはWPFで作ってclickonceで配布する。
0932デフォルトの名無しさん2014/08/24(日) 14:11:24.97ID:bMQBX1KS
もうストアアプリの時代なのに。
0933デフォルトの名無しさん2014/08/24(日) 14:47:32.18ID:zCypF7j0
ストアアプリは制限が多すぎて業務では使い物にならん
0934デフォルトの名無しさん2014/08/24(日) 16:30:06.83ID:l/oNlGJb
>>933
ストアアプリの制限で業務で引っかかるのなに?
ファイルの制限はめんどいかもだけど…
0935デフォルトの名無しさん2014/08/24(日) 16:57:36.44ID:zCypF7j0
>>934
オフラインでローカルDBを使い倒す要件
0936デフォルトの名無しさん2014/08/24(日) 17:43:43.42ID:VjqcUX0o
>>935
この間のdecodeでそれをなんとかする仕組みの話してたな
DLLhost上で動くものをWinMDでラップしてそれとごにょごにょする仕組み。そこで動くものはストアアプリの管轄外なのでなんでも出来る。なんか名前ついてたけど忘れた。

多分ちみのいうような要望あったんだろうね
0937デフォルトの名無しさん2014/08/25(月) 02:16:18.36ID:OTL7uAT+
Google Apps Script ってどう?
0938デフォルトの名無しさん2014/08/25(月) 11:11:29.41ID:vIyO4adw
質問です。

AvalonEditを使いWPFで2chブラウザのような物を作りたいのですが、可能なのでしょうか?

描画は高速で、1000レス程度なら一秒以内に描画が完了するのでその点はRichTextBoxなどと比べて優秀なのですが、
Editに特化しているようで、アンカーのためのポップアップの表示や、Hyperlinkクリック時のカスタマイズなど、難しい点が多いように思えるのです。

そもそもAvalonEditでそのようなことをやろうとしていること自体が間違いなのかなと思い至り、皆さんのご意見を伺いたいのですが・・・
0939デフォルトの名無しさん2014/08/25(月) 11:16:14.54ID:LIV+GZ8D
>>938
質問への回答ではないが、今2chブラウザに手を出すのは止めた方がいい
馬鹿を見るぞ

2ちゃんねる専用ブラウザ開発者の皆さまへ ★4
http://anago.2ch.net/test/read.cgi/software/1407034736/
0940デフォルトの名無しさん2014/08/25(月) 11:26:00.70ID:LIV+GZ8D
シンプルにまとめると
・scのdatクローラがうぜえ
・2chブラウザが広告収入に貢献しねえ
ってことで、datへのアクセスを制限するつもりだからそこんとこヨロシク的な内容
0941デフォルトの名無しさん2014/08/25(月) 11:28:15.20ID:vIyO4adw
>>939
たしかに2chは今色々混乱してるので止めたほうがよさそうですね。
ただ、今回はP2P掲示板の新月みたいな物をWPFで実装してみたくて質問させていただいたので、その辺りは大丈夫です。(後出しですみません(汗

WebKitで描画をやるべきだとは理解しているのですが、WebKit.netは2010年で更新が止まっていたり、
かといってC++でWebKitを使って書くのは私の能力的に無理ぽ・・・な状況で・・・
0942デフォルトの名無しさん2014/08/28(木) 22:36:41.35ID:veX7oXL8
>>936
検索しても見つからないのでもう少しヒントをくだしあ
0943デフォルトの名無しさん2014/08/28(木) 23:07:54.71ID:m+/T/clp
>>942
多分これ
http://msdn.microsoft.com/ja-jp/library/windows/apps/dn630195.aspx
0944デフォルトの名無しさん2014/08/29(金) 01:43:31.99ID:RNxc4B5m
>>938
AvalonEdit、考えたことあるけどあんまり深入りはしなかったのでどこで悩んでるかよくわからないんだけど、
少なくともアンカーの仕組みは、VisualLineElementGeneratorを継承してやれば難しくなさそうに見える。
AvalonEdit自身で実装してるハイパーリンクも同じように作られてるみたい。
https://github.com/icsharpcode/SharpDevelop/blob/master/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/LinkElementGenerator.cs

2chブラウザ向きじゃないというのはもっともで、それを言うならRichTextBoxも同じ。
そもそもFlowDocument1つに1000レス描画しようってのが間違いで、1レス1FlowDocumentで仮想化してやればそれなりのものになると思う。
WPFで書かれたTwitterクライアントはそんな感じの実装になってて、Krile(StarryEyes)はTextBlockだったと思うけど同じことしてたはず。

個人的にはWebブラウザでHTMLを描画するより、WPFの仕組みをうまく使って実装したものを見たいので、是非がんばってほしいなー
0945デフォルトの名無しさん2014/08/29(金) 11:15:32.70ID:CZofq/mq
WPFだと安価のポップアップで手間がかかるのでやめたほうがいいぞ
コピー対応も難しくなるしwebブラウザ様様だな
0946デフォルトの名無しさん2014/08/29(金) 12:55:41.51ID:r8U7ExZI
毎度思うけどいちいち命令口調でしか物を言えない奴って何なんだろうね。
本当幼児性丸出しっていうか馬鹿丸出しっていうか。
2chってそういうもの、とでも思ってるのかねw
0947デフォルトの名無しさん2014/08/29(金) 12:59:11.04ID:n0j14V44
ね。ね。そうだよね。
0948デフォルトの名無しさん2014/08/29(金) 14:52:03.70ID:kUEHD6wi
開発も楽にならないし使う側も使いづらい
WPFにする意味がない
0949デフォルトの名無しさん2014/08/29(金) 14:54:32.73ID:kUEHD6wi
AvalonEditで2chブラウザって俺もやったことある
でも保守性、拡張性の問題に気づいてやめた
0950デフォルトの名無しさん2014/08/29(金) 15:16:35.32ID:kY+7n5qS
HTMLで作られた2chを模したものをわざわざWPFで作ろうとするのが間違い

WPFで作るなら、2chのインターフェイスを再設計するくらいでないとメリットが無いね
0951デフォルトの名無しさん2014/08/29(金) 15:30:05.41ID:XMk7kd0x
WPFはそんなに作りづらいのか
0952デフォルトの名無しさん2014/08/29(金) 15:36:28.70ID:1wsdUNHj
というかブラウザが高機能高性能すぎる
0953デフォルトの名無しさん2014/08/29(金) 16:08:14.74ID:tDb3RCHH
2chがxsl で表示されてるとかなら良いんだろーけどな
0954デフォルトの名無しさん2014/08/29(金) 16:30:23.89ID:+3CR2HaY
>>944
>>945

ありがとうございます。

1レス1FlowDocumentで仮想化はやってみたのですが、仮想化した状況でのピクセル単位スクロールがうまくいかないのです。

.net 4.0でも4.5でも仮想化した状態でのピクセル単位のスクロールはできそうなのですが
http://stackoverflow.com/questions/13383613/how-can-i-get-a-datagrid-to-scroll-smoothly-when-the-row-is-taller-than-the-view
http://mslaboratory.blog.eonet.jp/default/2013/11/net-framework45-3075.html

各項目の高さがバラバラだとスクロールが(異様に?)カクカクしてしまうのです。
2chのような複数行にわたるレスが当たり前の環境だと、各項目の高さがバラバラになるのは当たり前なので、どうしたものかと・・・

Twitterのような、上から順に最新のメッセージが流れてきて、項目単位でのスクロールが許される状況なら、1レス1FlowDocumentが最適なのですが・・・
0955デフォルトの名無しさん2014/08/30(土) 00:25:06.25ID:4DiBm4MG
>>943
ありがとうございます!
読んでるだけで難しすぎて軽く吐きそうですが、進める所まで進んでみます。
0956デフォルトの名無しさん2014/08/30(土) 12:27:25.13ID:+CAmzS+K
>>951
慣れたら自由度高いし綺麗に作れるしでフォームとかやる気にならん。
ただ掴むまではハードル高い

>>955
ねーいくらCOMとかセキュリティとか絡むにしてももう少し簡単になればいいのに(´・_・`)
色々と自動化できそうだけどなー
0957デフォルトの名無しさん2014/08/30(土) 12:34:00.22ID:PrDDwUZJ
2chはきったねえHTMLフラグメントを吐くからチマチマ解析するよりブラウザに流し込んだ方が楽ってだけ
0958デフォルトの名無しさん2014/08/30(土) 12:36:17.68ID:hMTexY2G
それはいくらなんでも理解不足

WPFはよくある2chブラウザに向いたコントロールを提供してないってだけ
0959デフォルトの名無しさん2014/08/30(土) 13:01:51.16ID:PrDDwUZJ
ビューなんて自分で仮想化すればどうとでもなる
0960デフォルトの名無しさん2014/08/30(土) 13:23:13.96ID:2TcPImFV
自分で描画した場合、リンクとか動作させるのに
どういう実装がいいんだろう。
ある範囲内をクリックされたらブラウザ起動とかだけど
そのある範囲内って管理するのめんどそう
0961デフォルトの名無しさん2014/08/30(土) 15:21:54.02ID:bTf0KPk3
クリックと範囲なんかトリガー、アクションでなんの問題もないべ
ブラウザはシランけど、ProcessクラスあたりでURL渡したら標準のブラウザで開きそうじゃね
やったことないけど。なんかそういった簡単な方法があると思う
0962デフォルトの名無しさん2014/08/30(土) 15:25:25.74ID:bTf0KPk3
あ、アホなこと言ってた。その範囲に当たるコントロールがねーんだw
0963デフォルトの名無しさん2014/08/30(土) 15:45:19.61ID:8wS4uoeC
泥臭いけどなんか軽い透明のコントロールをオーバーレイさせるとか…
0964デフォルトの名無しさん2014/08/30(土) 20:35:10.66ID:4DiBm4MG
TabControlの中にTabItemが3つあります。
TabItem1での作業内容を保存しないままTabItem2やTabItem3に遷移する前に、
保存するか否か選択させる処理を入れたいのですが、TabItemが遷移する前に呼ばれる
イベントはありますか?
0965デフォルトの名無しさん2014/08/30(土) 20:41:38.57ID:4DiBm4MG
すみませんTabItemのLostFocusイベントでなんとかなりそうです・・・
0966デフォルトの名無しさん2014/09/03(水) 01:44:33.67ID:Tc2RC6z9
AvalonDockのXmlLayoutSerializerのLayoutSerializationCallbackって結局何書けばいいの?

今何も書いてない状態で、Deserializeによるレイアウトの復元はできているけど
これからAvalonDockのウィンドウをhide()→show()ってやるとアプリが落ちる。
(Deserializeを行わなかったら落ちない)
0967デフォルトの名無しさん2014/09/05(金) 21:42:55.55ID:BJ2zwc4v
<Canvas>のChildのAdd関数でちゃんと見えるようにしてnewしたEllipse追加したんだが見えるはいいんだけど、
Canvas.SetTopなんかで追加後に移動させようとしても動かない(見た目の変化なし)んですが・・・
普通にXAMLから<Ellipse>をまったく同じパラメーターで作って<Canvas>に入れてそれをプログラムからCanvas.SetTopで同じように移動するとちゃんと移動して描画される
Children.AddとXAMLに直接って違うんでしょうか?どうやったらSetTopで移動出来るようになりますか?
0968デフォルトの名無しさん2014/09/05(金) 22:06:12.44ID:BJ2zwc4v
あー、すいませんChildren.SetTop関数の参照元を<Canvas>じゃなくて<Grid>の奴にしてました
早とちり失礼しました。ちゃんとSetTop関数は動きました
0969デフォルトの名無しさん2014/09/06(土) 13:55:39.02ID:qAktKsTf
解決したのでフォロー

>>966
ウィンドウを隠したり再表示したりする用途の場合、コールバックは不要。

ただ、xamlで定義したウィンドウ名をそのまま使ってはいけない。こんな感じでちゃんと取ること
LayoutAnchorable la = dockingManager.Layout.Descendents().OfType<LayoutAnchorable>().Single(a => a.ContentId == 名前);

using Xceel.Wpf.AvalonDock.Layout を忘れずに
0970デフォルトの名無しさん2014/09/06(土) 16:31:59.57ID:9hB9C/Am
documentを扱う場合に使用する感じ?
0971デフォルトの名無しさん2014/09/07(日) 20:39:09.82ID:fnxrfl2O
リストの中のアイテムで時刻表示しようと思うけど
設定で24時間表示と12時間表示を選べるようにしたいです

MVVMでどのように実装したらいいんでしょうか?
M自体は変わってないので変更通知はアイテムに来ませんよね?
0972デフォルトの名無しさん2014/09/07(日) 21:03:29.70ID:BlxAK9yG
そういうのは、IValueConverter でV側で見せ方変えたらええで
0973デフォルトの名無しさん2014/09/07(日) 23:31:59.93ID:K/9WU1gp
>>971
VMから変換後の文字列を見せてもいいと思うけどね。
0974デフォルトの名無しさん2014/09/07(日) 23:35:20.43ID:KNwhARCn
>>971
フォーマット文字列をVMで公開してもいい
0975デフォルトの名無しさん2014/09/08(月) 00:17:25.66ID:NDi7BOZE
>>971
MultiBinding はどう?複数の Binding のうち何れかの変更通知で更新される。例えばこんな感じ。
<MultiBinding Converter="{StaticResource TimeConverter}">
<Binding Path="Time" />
<Binding Path="TimeFormat" Source="{x:Static localProperties:Settings.Default}" />
</MultiBinding>
09769712014/09/08(月) 22:47:02.00ID:yHEdNrlk
みなさんご回答ありがとうございます
非常に参考になりました
0977デフォルトの名無しさん2014/09/09(火) 00:40:21.46ID:1CotjR27
筋論で言ったら、見た目はVに書くべきだからDataTemplateSelector使うのが正統派なんだろうが
目的に対して余りにコーディング量が多すぎる・・・しかもxamlだけじゃ解決できないし
0978デフォルトの名無しさん2014/09/10(水) 01:36:26.53ID:iudUROhA
筋肉でいったら…に見えてまっするまっする
0979デフォルトの名無しさん2014/09/10(水) 06:12:24.88ID:Vjdq7FSm
設定で切り替えるんならVMでいいだろ
露骨な言い方をすれば、GUI周りのコードのうち、本来GUIなしでも簡単にテストできるはずの部分だけを
取り出してテストするのがVMの目的なんだから
時計の12/24h表示なんてまさにそれ
ビューの細かいデザインに依存するもんでもないし
0980デフォルトの名無しさん2014/09/10(水) 22:47:49.09ID:oypds7bC
mayaやらunityのinspecterよろしくグループごとに開閉できる機構ってどうやればいいですかね?
0981デフォルトの名無しさん2014/09/11(木) 00:44:36.67ID:7TGwXzKZ
expander使えばいい。
0982デフォルトの名無しさん2014/09/11(木) 01:13:42.02ID:D3y2vgJ4
>>981
なるほど
あざす
0983デフォルトの名無しさん2014/09/11(木) 01:20:27.24ID:7TGwXzKZ
そしてインスペクタならExtended WPF ToolkitのPropertyGridが参考になるかと。
0984デフォルトの名無しさん2014/09/11(木) 18:35:33.11ID:zESp62W1
EMFデータはどうやって読みこめばいいのでしょうか
public BitmapImage EMFtoImage(byte[] source) {
using (MemoryStream ms = new MemoryStream(source)) {
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.StreamSource = ms;
bi.EndInit();
bi.Freeze();
}
return bi;
}
sourceがEMFのbyte配列です。いろいろ試しているのですが、
bi.EndInit();のところでBadImageFormatExceptionが出てしまいます
0985デフォルトの名無しさん2014/09/11(木) 18:40:42.81ID:SNUYrGFx
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms536290%28v=vs.85%29.aspx
0986デフォルトの名無しさん2014/09/12(金) 13:54:23.53ID:nAUUugws
カスタム RoutedCommandの名前が〜Commandで終わっていないとエラーになるのは
そういるルールだからですか
0987デフォルトの名無しさん2014/09/12(金) 14:45:48.38ID:XcRMRSbT
依存関係プロパティがよくわからないので教えて下さい
ユーザーコントロールをGrid上に動的に配置し、
後で高さと幅を変えたい場合にまとめて変えられますか

ループして一個ずつ変えることは出来るのですが、
依存関係プロパティを使えばもっとシンプルに出来るような気がするのですが、
そのような使い方をしている例が見付けられなかったので教えて下さい
0988デフォルトの名無しさん2014/09/12(金) 14:46:46.47ID:XcRMRSbT
変な日本語ですみません
0989デフォルトの名無しさん2014/09/12(金) 14:57:59.28ID:WfJC1uO1
つまり、こんなの?

class VM : INotifyPropertyChanged {
&nbsp; &nbsp; public double ItemWidth { get; set; } // PropertyChangedとかは省略
}

for (int i = 0; i < 10; ++i) {
&nbsp; &nbsp; var userCtrl = new UserControl1();
&nbsp; &nbsp; this.grid1.Children.Add(userCtrl);
&nbsp; &nbsp; Binding binding = new Binding("ItemWidth");
&nbsp; &nbsp; binding.Source = vm; // VMクラスのインスタンス
&nbsp; &nbsp; userCtrl.SetBinding(UserControl.WidthProperty, binding);
}

vm.ItemWidth = 12;
0990デフォルトの名無しさん2014/09/12(金) 19:32:58.35ID:DoZOHl3s
RoutedCommandとVMのICommandって共存できるの?
0991デフォルトの名無しさん2014/09/12(金) 20:15:11.97ID:XcRMRSbT
>>989
そうです!ありがとうございます
VMクラスというものを使うのですね
それを調べれば出来そうです
0992デフォルトの名無しさん2014/09/12(金) 21:01:49.27ID:IBfP15Rf
次スレ建ててみる
0993デフォルトの名無しさん2014/09/12(金) 21:04:45.82ID:IBfP15Rf
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part18
http://peace.2ch.net/test/read.cgi/tech/1410523389/
立った
関連スレにストアアプリスレも追加しといた
0994デフォルトの名無しさん2014/09/12(金) 21:23:20.94ID:r3QqH95M
おすすめの参考書は?
0995デフォルトの名無しさん2014/09/12(金) 21:29:16.10ID:KFKBeTjC
VMクラスw
0996デフォルトの名無しさん2014/09/12(金) 21:38:04.67ID:svvzq9vZ
なんでもないことなんだが、その理解じゃ結構遠そうだなw
0997デフォルトの名無しさん2014/09/13(土) 01:37:23.31ID:A1YBozS5
>>993 乙
0998デフォルトの名無しさん2014/09/13(土) 03:08:27.25ID:jgo3ZRO7
埋めよう
0999デフォルトの名無しさん2014/09/13(土) 03:09:12.99ID:jgo3ZRO7
というか何で次スレ.NET4.0に戻ってんだw
1000デフォルトの名無しさん2014/09/13(土) 03:11:42.08ID:xJm8Hqfx?2BP(0)
WPF1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。