WPF(XAML, XBAP, .NET4.5)GUIプログラミング Part17
↑
君のその報告こそどうでもいい事なんだが
why?
立てんなっていってんだろうがカス
すっかりアンチが居着く様になったなあ
DataTriggerって定数と一致する時のみなの?
もっと自由な比較がしたいんだけど
IValueConverterとか使えば自由に比較できるよ
11 :
デフォルトの名無しさん:2013/11/12(火) 09:59:23.64
超重いデータバインディング処理のGUI反映完了を知る手段ってありますか?
ListBoxカスタマイズしてサムネイル一覧表示してるんだけど
ObservableCollection<BitmapImage>に入れた後
処理が帰ってくるまでフリーズするんだよねぇ
完了タイミングを知るより処理を軽くする方が正しい気がする。サムネイルなのに画像でかすぎとか更新イベントとびまくりとか何か要因あるんじゃない?
>>10 初期は誰も居なかったのに、ずいぶんと人が増えたものだ
14 :
デフォルトの名無しさん:2013/11/12(火) 11:55:59.89
>>12 個数が何百もあって、最初はconverter経由でサムネイル化もバインディングでしてたけど、あまりに重いからサムネイル化はスレッドでやってあとからBitmapImageだけバインディングしたけど、結局ListBoxへのItem追加(バインディング)が遅かった
ListBoxにサムネイル入れるのが間違ってるのかな、、、
>>11 単に仮想化がかかってないだけの気がする。
ListBoxはデフォルトのままだと仮想化されてなかったような。
ItemsPanelに何使ってるの?
StackPanelじゃないとVirtualize効かないぞ
WrapPanelとか使ってるならItemSize指定しないと死ねる
正確にはVirtualizingStackPanel使わないと、だな
何にせよちょっと情報が足らんな
できればListBoxの部分のXAMLだけ貼ってくれ
20 :
デフォルトの名無しさん:2013/11/13(水) 09:47:03.13
ありがとう!勉強なったよー
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel ItemWidth="120"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
ItemsPanelはTemplateでWrapしてました
ノーマルで使う場合は仮想化が標準で利いていて問題がなかったもよう
見た目をWrapPanel風にしたいんだけどVirtualizingWrapPanelってないのか...
自作か外人の作ったの使うか
22 :
デフォルトの名無しさん:2013/11/13(水) 10:01:26.48
codeproject見つけました、めんどくさそ笑
素直にVirtualizingStackPanel使うしかなさそうですね
>>16 いや、ListBoxは標準で仮想化ですよ。逆にそれが原因でトラブったから間違いありません
って事で、バインディングされているプロバティーのgetで読み込まれたタイミングでサムネ作ればなんとかなるかも
4.0以降のDataGridで20行とか行数を固定にしてコントロールの縦幅に合わせて行の高さや
文字の大きさを調整するとか簡単に出来る方法無いかな?
>>23 > って事で、バインディングされているプロバティーのgetで読み込まれたタイミングでサムネ作ればなんとかなるかも
仮想化が無効になってるんだから、意味ないと思うけどな。
素直にVirtualizingWrapPanel実装したほうがいいんじゃない?
最初は面倒だけど、これが実装できるようになると、
実現できることの幅がぐっと広まるよ。
こんなもん実装しておけよって思ってしまう
不思議だなあ
そのうち標準で実装されるかもね。
VirtualizingStackPanelですら
4.5でやっとまともになったって段階なんで
WPFの歩みは皆が思っているより相当遅い。
俺たちのWPFはこれからだ!
6週ごとのリリースサイクルにしろよ
阿鼻叫喚だぜ
> 俺たちのWPFはこれからだ!
打ち切り?w
リスト系とかDataGridとかカラムの高さを変更しても中の文字とかサイズに追従してくれないけど
そういう場合ってどうやったらフィットさせられるのかな。ViewBoxイチイチ仕込むしかない?
>>25 いや、ListBoxは標準でVirtualizingStackPanelが包括してあって、VirtualizingStackPanel.IsVirtualizing="false"とすると
はじめて仮想化が切られるようだ
BringIntoViewがまともに動かず苦労したが(仮想化が有効だからItemが生成されていないため)仮想化を切ったら普通に動いた
DataGridにバインドしたDataTableのデータの内容によって、セルの背景色を変えたいんですが、どうすればできるのでしょうか?
CellStyle作ってDataTrigger使えば行けるんじゃねえの
Livetの人のページが見られなくなってるけど何なのこれ
>>34 業務連絡はTwitterでやってください
どんな業務よ
フレームワークを使ったこと無いんだけどどれがオススメ?
自作。割とマジで
自分の好みに合わせて最終的に自作になるという話は分かるけどさ、それは他のを
触ってみて初めて到達できる境地だと思うんだよね。
まずは基本のPRISM使ってイラっとするところからじゃないかなw
俺も最初悩んで日本人作ってるしとLivetが良さそうと思ったんだけど資料が
なすぎで選定落ちしたw あれはMVVMやWPFわからん人には多分無理だと思う。
40 :
デフォルトの名無しさん:2013/11/15(金) 13:19:01.57
ReactiveUI一択
え、えむえふしー…
ダメだ、UserControlが複雑に重なりあうとBindinggroupがまったく機能しなくなる
しゃーないから自分でClone実装して似たような事してるわ
Xamlの読解性って最悪じゃないですかね?
HTML%2bCSSの方がよっぽどマシなんですが
じゃあRIAのHTMLだけ見てレイアウトを想像できるのかと
LooseXAMLが、HTMLに取って代わる時代とか来て欲しかったなあ
もう無理だろうけれども
なあにXAMLは既にHTMLの代わりになってるじゃん
IEだけだけど
所詮専用設計されたものじゃないので無理があるほうが逆に自然
Bindingの方法が何通りもある理由ってなんなんでしょうか
下々がWPFを理解し辛い理由がこのBindingなんすよね
ひとつこれが正しいですってMSDNで解説してくれてれば迷わないんですが
ケースごとの使い分けとか解説してないですよね
だからググっても人によって行く通りもバラバラの解説で更に迷うみたいな
何通りもあるってどういうこと?
拡張マークアップのことを何通りもあると表現しているのか?
できれば何通りかサンプルURLでも貼ってくれるといいな
まあテンプレートバインディングなんかはそうだし、プロパティパスの書き方が
プロパティの型名を入れる書き方とそうでない書き方があったりどか、そういうのはあるね。
あとBindingに限らないけど、WPFってこういうの結構多い気が
http://togetter.com/li/63245 やっぱりWPFもXAMLも筋が悪いよな全体的に
TypedTableBase<T>はIEnumerableが付いてるからリンク先みたいな状況は滅多に発生しない
53 :
デフォルトの名無しさん:2013/11/16(土) 15:51:55.36
WPFややこしいとか思ってたがインターフェースビルダーの方が意味不だったわ(´・ω・`)
しかもXcode4.7と5であまり互換性がないという
Macの話は止めろ
どうせ使わん
WPFは機能面や構造面を見ると十分採用圏内なんだけど
メンバーへのトランスファーを意識するとどうしたもんかと思ってしまう
>>51 しかも、MS自身がこういうドキュメント化されてしない仕様を把握しきれてないね。
そのせいで、コントロールの組み合わせ次第でレイアウトが崩れたり、
VSで問題ないコードがBlendでエラーを引き起こしたりとか、
ボロボロだよ。
58 :
デフォルトの名無しさん:2013/11/16(土) 19:52:14.97
問題点を整理した上でRazorを拡張して
Webアプリとネイティブが両方同じ方法で作れるようになったら
大逆転あるで
そもそもなぜxamlとaspxを分けたんだろ・・・
Silverlightのためだろ
そんくらい察しろ
M$はAppleの真似やめてM$ Acountは無料にしろよ
WPやWin Storeアプリなんて誰が金払ってまで作るんだよw
売れたら30%手数料でいいだろ、M$ごとき落ち目がAppleと同じ目線で商売すんな
>>58 Xamlでネイティブ・WP・WS・WebのUIをマルチで作れるなら逆転あるわ
おじいちゃんは黙ってデスクトップにしがみついてれば
いいだろう無理するな
>>61 本当は、そのWebの部分をSilverlightでどうにかするハズだったんだよなあ
iPadの出て来たタイミングが、マジで癌だった
後3年くらい遅けりゃねえ
WebはバイトコードDOMみたいな世界に中々いけないな
拡張子が.xamlのWebページって一度も見掛けた事ないな
まあ有っても困るんだけど
LooseXAMLを流行らせようと思ったら、
IEが大きなシェア率を占めていた時代にやらなきゃ駄目だった
おい、NaNってなんやねん!
Width,HeightはNaNでActualは0返しやがる、どうやったらサイズ取得できんねん!
ホンマWPFは地獄やで!
WPFバグ多すぎ、しかもよくわからんバグがある
ColorのGとBがある条件下だと逆になるとかどういう設計なんだ
There is no design, only WPF.
69 :
デフォルトの名無しさん:2013/11/17(日) 11:13:05.47
>>63 いまならSilverlight on javascriptとかいけんじゃねーの。
コンパイラスイッチでILがjavascriptに変換される感じで。
まぁ実際作ったりはしたんだろな。でモサモサすぎてオクラになってる予感
70 :
デフォルトの名無しさん:2013/11/17(日) 11:16:04.16
>>66 あー俺もストアの方だがRichEditBoxのDesiredHeight取りたいんだが取れたDesiredHeightも0でマジファックですわ(´・_・`)
中間コードをJavaScript化しても、あまり意味無い気がする
SLで(xamlで)作ったGUIをWebブラウザ上で表示するには、SLプラグインが必要な訳で
SLプラグインが動く状況なら、SLに中間コードを実行させりゃ済む話だからなあ
LooseXAMLで良けりゃIEはSL不要だが、他のWebブラウザに対応する事を考えるとSL必須だし
つか、Silverlightは元々JavaScript使える
SL1.0の頃はむしろ、JavaScriptしか使えなかった
マネージコードと比べて出来る事は非常に少ないが、
あのAPI群を拡張出来ない訳は無いんだよな
RIAプラグインはSilverlightもFlashも、モバイル界隈から嫌われてるからな
こればかりはしゃーない
iOSは一貫して非対応、(サードパーティ製のFlash使用可能ブラウザとかはあるけど)
AndroidもFlash対応を謳ってたのが、非対応に方針転換
WindowsPhoneチームでさえ、プラグイン類の搭載に否定的
デスクトップ界隈では、まだしばらくRIAプラグインの需要はあると思うが
今後どうなってくんだかな
>>70 ホンマなんやねんな!
Actual、Desired、NaNとかイミフや!!
WinFormsにBitmapEffectとAnimationClock実装されればWPFなんてつかわんわ!!
残念
すでにメンテモードなWinFormsには
されないんです
それとWPFウィンドウを透過したらWindow Form Hostまで透過処理されるバグさっさと直せ!
Hostの上にコントロールを置けないのを直してほしいわ
直そうと思ったけど、問題がありすぎてだめでした(・ω<)
詳しくはconnectを見てね
URLくれ
酒の肴にする
>>68 Ghostbustersか
いつの日かWPFも亡霊と呼ばれる日が来るだろう
ストア・アプリもXAMLなんでしょ?
酷すぎてHTML5+JScriptの方が流行るかもしれないけど
ストアアプリなんて「出さないとそれなりのダメージがある」人しか作ってないような
vs2013で initcomponents での例外が出て参った
普通のビルドでは問題ないのにバッチリビルドで100%発生
どうもg.csのコンパイルがおかしい感じ
ばっちりビルドと読んでしまったw
首釣ってくる
>>83 文字列リソースをVSのデザイナの出力そのままでBindingしてない?
私はそれで糞ほど嵌ったから参考になれば。今はExtension書いて回避してる。
>>77 上におけないどころかScrollViewerとかはみ出るとか実用度にかなり疑問を感じるよね
>>85 お、書いてる書いてます
確かに落ちる部分はresorceがらみのよう
bind方法が悪いのですか、ちょっといろいろためしてみよう
89 :
デフォルトの名無しさん:2013/11/18(月) 07:39:44.90
>>71 いや、要はそのプラグインごとjavascript化して動けばいいと。
技術的にはいけると思うけど遅そう(´・_・`)
90 :
デフォルトの名無しさん:2013/11/18(月) 07:44:06.01
>>74 必要サイズ計測用に作りたてのでやったら0だったけどダミーで貼り付けた奴だと取れた。なんざんしょ。
でも自分はフォームに戻ろうとは思わんなー
>>89 HTML5のCanvasを使えば、出来なくは無い…のかねえ
でも、HTML5はDataGridがお蔵入りになるレベルだからな
93 :
ガスライティングで検索を!:2013/11/18(月) 10:21:33.82
カルト宗教団体は、信者や敵対者に対して組織的な嫌がらせを行い
マインドコントロールしなければ組織を維持、拡張することができません
そのため、証拠を残さず、訴えられないように、ターゲットを集団で威圧、監視し、嫌がらせを行う「ガスライティング」という手法が必要なのです
カルト教団がどのように信者のマインドをコントロールしているのか知って下さい
[ガスライティング 集団ストーカー カルト]などで検索を!
...
>>90 どこかのヘルプでWPFでは入れてるコンテナとか次第で勝手にサイズ調整するから云々というのを
読んだ記憶がある。GridやらDockPanelやらStackPanelやら複合で駆使している時点で良く分からん。
こういう内部的に○×してて外からアクセスできるプロパティからいじれないというのは多い気がする。
とはいえ、俺も今更Formsに戻る気はしない。
0とかNaNになるのはタイミングが悪い
だいたい参照が早すぎる
ロジックとVisualは別々でうごいてる
DataGridTemplateColumnにDataTableの列をバインドしたいんですが、
DataTemplateを外出しにした場合はどうやるのでしょうか?
外だしってのはどっかのResourcesに入れたってこと?
まあ別にそれで何が変わる訳でもない
DataTemplateはどこかのリソースに入れてます。
<DataGridTemplateColumn CellTemplate={StaticResources キー} Binding={Binding 列名}/>
のようにしようとしたんですが、Bindingを指定できないみたいで、質問しました。
どういう感じに指定したらいいのでしょうか?
100 :
333:2013/11/19(火) 00:44:57.14
VとVMのどっちに書けばいいんだ?って多くないっすか?
例えばComboBox ItemとかXamlに書いた方がいいのかVMで書いた方がいいのか
結論からいえばMVVMってVとMの粗結合が目的っすよね?
そのためのVMだからVとVMが密結合になるのってどうしようもないと思うんですが
Presenterなんだから明らかにV要素です
>>100 役目を理解、判断できてないだけ。
なんか自分の無知を棚に上げて批判するやつ多いよなぁ。
まぁ、でもさ。ルールに縛られるのが一番阿呆らしいよ?書きやすいように書くのが
正解だと思う。同じものができるならルールに縛られて冗長なコード書いて生産性
下げるより多少メンテナンス性落ちても生産性上がる方が現場向き。
美しいとかなんとかはアカデミックな連中に任せておけば良い。
最後はそのバランスだし人に正解を求めるものではない。
×書きやすいように
○メンテしやすいように
>>102 何当たり前のこと言ってるの?
と言いたい所だけど・・・MVVM関連はルール重視に偏りすぎてるので
こういう当たり前のことを再確認したくなるね。
>>100 XAMLで書いたら固定になっちゃうから、
東西南北とか十二支、星座とか、
選択肢がほぼ固定なもの。Enumでも定義できるようなのは
XAMLで書いてもいいとは思う。そういう場合くらいしか使わないな。
選択肢の内容が毎日のように常時変化するなら、
VMのコレクションにバインドする方がいいね。
106 :
デフォルトの名無しさん:2013/11/19(火) 14:08:52.91
>>104 その当たり前のことをわかってないレスに対して言ってるんだろうが。
この項目にはこれらの値しか入らないってのがVMレベルまでの仕様なら
場合によってはXAMLに全部書いちゃってもいいと思うよ
さすがにDBに入れる値を制限するとかだとXAMLに書くのはゴミカス設計と言わざるを得ないが
>>94 WPFのレイアウトは、設定できる範囲が多すぎるため
複雑なことも出来るんだが、どうすればどうなるってのが理解し難くてね
この前RowDefinitionのHeightをBindingしたんだが、うまく行かずに
同じものをコードビハインドでいじったらうまく行ったり
変だと思うよ
>>99 まじかよ・・・
ってことは、同じDataTemplateを再利用するなんてほぼ不可能じゃねえか
まだ君は地獄の門の前に立っているに過ぎない
希望を捨てる覚悟はありますか?
>>111 DataGridTemplateColumnにバインド設定することは、
XAMLだけでは多分無理。
コードビハインドでは一応可能だよ。
>>103 メンテナンス性って幻想だと思う。というか「ルールに縛られてないで」の意味が
わかっていないからそんな突っ込みするんだよな。
そもそもメンテナンスし続けて10年動かすプログラムをWPFで書いている奴が
どれだけいるのやら・・・。
Modelさえ綺麗に隔離されてれば正直VCだのVVMだのはごりごりでいいよね
118 :
デフォルトの名無しさん:2013/11/20(水) 20:30:29.83
>>117 出来ればVMはViewがなくても動いてくれるとユニットテストできて助かります。
>>117 VとCって厳密に切り離せるの?
ほとんどの場合VがCを内包しちゃってるよね
Vに全く依存してないCってSmalltalkくらいでしか見たことが無い
そもそもMVCってのがVに線を引くとか四角を塗り潰すとかしか機能がなかったころの残滓だからな
お昼の質問
ListViewのソースにobservalcollectionをバインドしています
1秒ごとに要素を追加したいので
Model内でループして1秒間隔でコレクションに追加しています
所が描画はModelの処理が終わるまでされません
DoEvents相当の処理を間に入れてやると1秒ごとに表示されますが
WPF的にはどのように実装するのが正しいのでしょうか
VとVCを完全に切り離すって相当しょっぱいUIとデザインなんでしょ?
だってVのイベントやロジックはVCに書くのにどうやってVとVC切り離すの?
(うわぁ)
(頑張ろう)
(結婚しよ)
VCって何の略?
ボイスチャット?
バーチャルコンソール?
ビタミンC?
ベトコン
べんちゃーきゃぴたる
Visual Cが出てこないとか
ありえんよな
VS2013 C# WPFアプリ実行時InitializeComponent内でXamlParseException例外が発生してしまう件について調べてみた。困っている人いると思うのでメモついでに貼っておきます。だれかMSに通報してください。
発生する条件
・ソースコードがまったく同じでも発生することを確認
・リビルドしたときに発生する
・リソースをStaticResourceでバインドしていると発生する?
回避策
・いちど例外が発生する該当xamlファイルを修正(当たり障りの無い部分を消して)ビルドして、修正箇所をUndoして再ビルドすると回避できる
原因
問題なく動作するときと例外が発生する場合のobj構築に以下の差異発見
・***.FileListAbsolute.txt
***.csprojResolveAssemlyReference.chach
・***_MarkupCompile.lref
・GeneratedInternalTypeHelper.g.cs
上記の中を見ると、どうもリビルドで作成した場合に各部参照の整合が取れていない様子
このせいでexe等バイナリ系がすべて違う内容になり、結果として実行時エラーがでるよう
xaml関連はそんなんが多すぎる。xamlで文句タレてきたら、最初から信用してないから
VS閉じて開き直したり、なんか一通りやってそれでも出るなら調査開始するw
>>133 俺も何か変なこと起きたらVS落として中間ファイル全部手で消してから全コンし直す。
メインは2012だけど、この環境でうまく解釈してくれないものも2013だと問題ないし
開発環境として着実に進化はしてるんだと思う。
とてもプログラマー板とは思えない書き込みだらけのこの板、このスレッド。
何も得るものなどない。煽り、叩き、馴れ合いしか能のない住人達。
これが今の日本のIT産業の現状なのですね。
せめてこの板の住人が、リアル厨房だらけであったことに望みを託して、私は
この板を本日限り去ることを決心いたしました。皆さん、がんばって勉強して
立派な大人になってください。さようなら。
コピペでも狙ってんの?
VIPの方がオススメ
なんで自作カーソル扱えないんだろ
UI描写が内部的にDirect X2Dとベクターで描写されてるだけでWPFそのものの表現力なんてゴミじゃん
作ろうと思えば作れるとその機能を既に持ってるでは話が違うだろうと
なーんもないんだよWPFは、これで使って欲しいって馬鹿じゃねーのと
wpfは簡単に見た目を変えられるから、デザイン凝りたい時は十分使える
でもな完成度がイマイチなんだわ
141 :
デフォルトの名無しさん:2013/11/29(金) 14:45:14.06
つーてももっと完成度高いフレームワークある?
あったらPart17までスレが続くわけがねぇ
Sonyのスマートフォンのスレなんてまだ発売されてないのに20スレまで行ってるぞw
なんかこう、属性が違くねーか…wpfでどうwktkしろってんだw
日本で売っても成功しないの判ってるから
無駄に戦わず見捨ててるのかもな
Windows Phoneが頑張ればShilverlight for WP経由でWPFも賑わうのにな
Modern UI for WPF使ってる人います?
Nuget経由でインストールするとVSにこれのプロジェクトテンプレートが追加されると思うんだけど、
このテンプレートで作ったプロジェクト、俺の環境では必要なdllへの参照設定がされてない状態で
作成されるんだけどこういうもの?
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も試してみましたがよくわかりませんでした
今バインドでthis.DataContext %3d hogeかxxx%3d{Binding}しかわからなくて使ってないんだけど
個別にバインドしたいときってどうしたらいいんでしょうか
変数のように(Xaml)<button content%3d{Binding hoge} /> (C#)hoge %3d 1;
みたいな
なぜかイコールが%3dに化ける・・・
>>149 ButtonにもDataContextがあるから、そこにオブジェクトを放り込めばいい
個別にするならSourceに指定するのが基本だな
DataContextは同じものへのバインドを使いまわす時に
親のコントロールで一度だけ指定して済ませるためのもの
マウス以外のデバイス制御を行っているのですが
SendInputとかWindows自体を操作するのではなく
マウスのルーティングイベントを意図的に発生させる方法はないでしょうか?
ImageにMouseLeftButtonDownを持たせて指定座標にImageがあればMouseLeftButtonDownを発生させたいです。
ご教授よろしくお願いします。
155 :
154:2013/12/05(木) 18:56:31.90
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はアクセスできない保護レベルになっています・・・ってなんだよー!
ちょっと何いってんのかわk(
>>157 すみません。
WPFでマウスイベントをシミュレーションしたいのですがコードの書き方がわからず
調べてるうちに
>>155にたどり着いたのですが、実際コードに起こしてみたのが
>>156 なのですが、
エラー 5 'System.Windows.Forms.Control.OnMouseClick(System.Windows.Forms.MouseEventArgs)' はアクセスできない保護レベルになっています。
と出て結局出来ませんでした。
WPFではマウスイベントのシミュレーションはできないのでしょうか?
WPFなのにSystem.Windows.Formsとはこれいかに?
160 :
デフォルトの名無しさん:2013/12/05(木) 20:49:44.29
仕事なのか趣味のプログラムなのが気になる(´・_・`)
>>154 ルーティングイベントを起こすなら UIElement.RaiseEvent を使う
>>160 趣味なら他人が教えようとしても自力で調べるだろ。
MVVMでビヘイビアやトリガーをXAMLに書く必要があるのが高すぎる敷居に思える
コードビハインドでまずFormsから移行させていつPrismに行くか…
ビヘイビアとか面倒くさすぎるわ
ユーザーコントロールじゃダメなの?って思ってしまうわ
165 :
デフォルトの名無しさん:2013/12/05(木) 22:57:21.83
掲示板を自分の感想を述べる場所だと信じている人がいるんですよね。
しかし、最近の研究で、そうではないことがわかってきたんです。
日記帳とも違うはずなんだがな
167 :
デフォルトの名無しさん:2013/12/05(木) 23:26:03.31
便所の落書きですよ
本気で流行らそうとしてないよね
VB6切ったみたいにWinForms切ればいいのに
ふかのうです
WinForms切ったらWindowsマジで終わるぞw
既にスマホ・タブのモバイルでは開発環境として人気も魅力ゼロだからな
WinForms捨てるってことは業務システム捨てるってことと同義だろ、WPFなんてグリッドすらまともに使えなくてサードのツールパックないと話にならねー
俺から言わせればさっさとWPF捨ててWinFormsを進化させろと
MVVMでユニットテストが楽(笑とかどうでもいいわ、その他の部分で効率がガタ落ちになる
何でこのスレ来たの?
あんまり言われないけどWPFの2DのグラフィックってGDI+より分かり難いしパフォーマンス悪いし、
いいとこないよねw
もうちょっと何とかならなかったのか
具体的にConnectで教えてやれよ
俺はもうあきらめた
>>169 現場PG「WPFの完成度が80パーセント?冗談じゃありません。現状でWPFの性能は100パーセント出せます。」
主任「グリッドすらまともに使えない。」
現場PG「あんなの飾りです。偉い人にはそれがわからんのですよ。」
主任「使い方はさっきの説明でわかるが、WPF私に使えるか?」
現場PG「主任の能力は未知数です、保証できる訳ありません。」
主任「はっきり言う。気にいらんな。」
現場PG「どうも。気休めかもしれませんが、主任ならうまくやれますよ。」
主任「ありがとう。信じよう。」
>>169 モバイルはXamarinあるからイケる!!
まぁ、がんばれ
シェイプ4万個出しただけで劇おもぷんぷん丸なんだけど
5千個ぐらい3Dポリゴン出しただけでがくがくしだすから当たり前だろ
>>174 >
>>169 >モバイルはXamarinあるからイケる!!
Xamarinのサブスクリプションは高くて制約多すぎるから流行らんよw
残念
たぶん使ったこともないような奴が行けるとか言ってると思うの、あれは
180 :
デフォルトの名無しさん:2013/12/06(金) 18:49:28.74
>>178 会社だとあれぐらいの値段は余裕。
今ガチで使ってるけど色々トラブルはあるけど使えるというか、iPhoneと泥、窓向けに別々に作るとかもうありえん。
窓向けは余計だろう
需要ないもん
182 :
デフォルトの名無しさん:2013/12/06(金) 23:59:16.19
>>181 それを判断するのはお前じゃない(´・_・`)
WPFやってるとクマができる
気のせい?
気のせい
クマってなんだ。馬鹿馬鹿しい制約を自分に課して寝不足にでもなってるんかw
毎日8時間くらい寝てるけど、クマが消えないわ
SEの宿命なのかね?女の子は可哀想だ
鮭取ってくるまで育てたらいい
ホーリーランドごっこすれば気にならなくなるさ
杭全
久しぶりに自作アプリ立ち上げたら文字がにじむようになった
一体どのタイミングでおかしくなったんだろ?
>>190 RotateTransformでも設定してるんじゃない?
>>190 ディスプレイごとに拡大率変えたりしてたりしない?
Win8.1からのPer Monitor dpiの設定をしてると、WPFアプリでもDPIスケーリングがかかってボケボケになることあるよ。
193 :
デフォルトの名無しさん: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で動かしてみたら上記のようなことになってしまいちょっと困ってます。
>>193 酷いコードだな...
何がしたいのかさっぱり分からないが、UIスレッドのループの中で表示プロパティを
連続して変化させても表示が追従するわけがない。
95の時代から同じことやってるが未だに浸透してないんだよなこの手の話は
>>194 Windows8では動作するんですが、あなたの常識では追従するわけないんですね
逆切れかよ馬鹿だね。
だいたいUIスレッドでDispatcher.Invokeって意味分かって使ってるのか。
ほんなわけあるめえ
大体バージョン違って同じ動作する保証なんて誰がしてるってんだ
花畑かよ
春爛漫だなって感じ
UIスレッドと描画スレッドって別じゃなかったっけ
この話で描画スレッドが介在する余地はどこにもない
UIスレッドでDispatcher.Invokeを呼び出してUIスレッドで値をセットしようとしてるんだから
201 :
デフォルトの名無しさん:2013/12/15(日) 09:02:28.93
>>200 いやここで言ってるのはいわゆるUIスレッド建てるとそれに併せてシステム的な意味での描画スレッドが一対一で作られるよねって話だと思うが。
確かそうだったはずだがそこら変の挙動疎いのでだれかよろ。
> UIスレッド建てるとそれに併せてシステム的な意味での描画スレッドが一対一で作られる
当然、それを知ったうえで、
> 描画スレッドが介在する余地はどこにもない
って言ってるんでしょ。
俺も同意見。
違うと思うなら、だれかよろじゃなくて、自分で反例を出しなよ。
203 :
193:2013/12/15(日) 09:40:44.91
Windows.Threading.DispatcherPriority.Loaded を Windows.Threading.DispatcherPriority.Background にすれば動作します。
でもなぜBackgroundだと動くんだろ。だれかわかる人います?
Invokeは同期処理ですから、優先順位をRender(6)より低く設定してInvokeすれば表示更新が優先処理されると理解してたんですが。
>>194-195 よう、老害!
メッセージループに戻るまで表示は更新されない。
95時代の常識で考えるとそう思うよな。
だが違うんだよ。俺も試して驚いたが。
>>193のように、この動作に頼るのはまずいが、
過去の常識に囚われてると、原因不明の画面ちらつきとかを引き起こしそうだ。
205 :
193:2013/12/15(日) 10:04:13.57
>>204 すいません、このコードに頼るのはまずいと承知してるんですが、Dispacherの動きを理解したくてこんなことやってます。
ググると疑似DoEventsの実装サンプルみたいに紹介されてるんですよね。
>>203 WPFにはUIスレッドでの処理が滞ってると、表示更新の優先度を下げる機構がある。
その、優先度が下がるタイミングが
>>193のバーが8の時だったんだろう。
> Background にすれば動作します。でもなぜBackgroundだと動くんだろ。
優先度が下がった後の表示更新より、さらに低い優先度だからじゃないかな?
Windows8では起きないって事は、
この優先度を下げる処理は廃止されたのかもね。
正直俺も余計なお世話だと思ってたし。
WPF名物、もっさりスクロールの原因でもあった
>>206-207 ありがとうございます。なるほど優先順位が途中で変更されるんですか。
ヘルプを読んでても全然そのへん読み取れなかった。もう少し自分でも調べてみます。
210 :
デフォルトの名無しさん:2013/12/15(日) 10:26:38.34
>>202 なんでお前は敵対心丸出しなの?
おれはこんなのもなかったっけ?っていってるだけなのに。
お前が老害なのか知らないけどストレス溜まってるのか?
>>197 この人のDispatcher.Invokeの意味ってのを聞いてみたいw
ループのたびにプログレスバーを更新するのも考えものだね
1000回ループなら10回毎に更新とか普通に組む
213 :
212:2013/12/15(日) 13:14:46.44
あ、悪い。いつもの自分のやり方と違っていたから勘違いしたわ
>>193 メッセージングのお勉強が足りない
ブロックしてる間にUIいじってもだめよ
>>193 なんでブビ厨がこのスレきてんの?
え?同じ.NETで同じWPFだから?
一緒じゃねーよksが!wwww
>>193のレベルが高すぎてほとんどついてこれるやつが
いなかったようだ
恥ずかしいなw
確かに
>Dim d = CDbl(i) / CDbl(max) * 100
とか笑いのレベルが高すぎてC#専には伝わらんだろうな
本当の笑いどころは最初から言ってるようにUIスレッドのループの中でUIをいじってるところだけどね。
老害とか言ってる奴がいたけど、むしろ
>>217みたいな「テクニック」は
大昔の8bitやPC-98のBASICで使われていたもので、老害を攻める相手を間違えてるとしか思えん。
別にC#専じゃないけどね、VC/VC%2b%2b、JavaScript、Pythonも書くし
それでもブビは仕様でVBA書くときくらいだな、さっさと滅んで欲しいが
VBAが消えなくとも他の選択肢、具体的にはJavaScript/Pythonが使えればまともな技術者ならみんな喜ぶと思うよ?w
(別にスレッドを立ち上げて、その中でいじってるんじゃないのこれ・・・)
>>218 つか「Dim d = CDbl(i) / CDbl(max) * 100」のdはDoubleになるから
次の行の「If bar.Value <> d Then」が必ず真になって
10000回すべてinvokeが呼ばれているな
更新が追いつかない原因はココだろ
PregressBarのValueってDoubleじゃなかったっけ?
>>222 いや「If bar.Value <> d Then」は、前回のdと今回のdを比較
つまり 「d = CDbl(i) / CDbl(max) * 100」と「d = CDbl(i+1) / CDbl(max) * 100」の比較になるから
dがdoubleだから常に真
ああ、そりゃそうか
本質的なところはキューに溜まり過ぎて処理がおっつかなくなってたってところでいいのかな
いや少なくともそこが本質じゃないからw
UIスレッドでループを回してアニメーションをさせるって発想そのものが根本的に間違ってる。
プログラムで間引いて(ウェイトをかけて)タイミングを調整するとか、いつの時代のテクニックだよw
wait ではなくね?w OnPropertyChanged が必ず走っちゃうよ みたいな話だろ
こういう判定はするべき。そもそも論は別にして
そもそもナンセンスなコードだから意図する仕様もコードから完全には読み取れないけど、
0から100まで1/10000ステップで変化させるというのは、たぶんタイミング調整のつもりなんでしょう。
実に間抜けとしか言いようがないけど
228 :
デフォルトの名無しさん:2013/12/16(月) 01:26:52.88
結局ループから抜けてないのに描画されるのはなぜよ?って話はどうなったん?
抜けてないつもりでもなんか抜けちゃってるの?
WPFはUIスレッドとレンダリングスレッドが別だから
ここってひょっとして馬鹿しかいないの?
そうだよ
そもそもUIのプログレスを更新したいのにTask、せめてBackground Wokerを使おうと思わない頭の悪さがVBerだな〜w
考えられないがそこまで辿り着けなかったとしてもアニメーションさせたいなら何故Timerを使わないのか
その昔VBのTimerが糞すぎてブビ厨はTimerを使わずにwhile(true)DoEvents();でループさせるコードを量産した
そして現在も今時小学生でも書かないような糞コード書く・・・
ブビ厨ってなんで学習しないの?仕事から帰って家でなにやってんの?プログラミングの学習しないの?せめてGoogleさんで逆引きしないの?
233 :
デフォルトの名無しさん:2013/12/16(月) 04:39:19.89
>>229 んじゃやっぱり上で更新するわけないと言ってたのは老害決定でいいのか。
>>232 その老害認定された人?そのせいでふぁびょってるの?
なぜそこまで辛辣な物言いをしようとするのかがわからない
上を見れば切りがないし下を見ても同じで、自分を絶対的な基準にして
少しばかり自分より後から学んでいる人を萎縮させたがる精神状態は
そもそも自分自身のコンプレックスによって
引き起こされているのでは無いだろうか
別に分からなくていいだろよ
お前には関係ない
はい。この話は仕舞いな。
236 :
デフォルトの名無しさん:2013/12/16(月) 06:05:55.83
なんか頑なにUIスレッド内では表示更新しちゃダメって言い続けてる人がいるなw
できるんだからダメもクソもないだろうにwww
今回びっくりしたのは、windows8が割とちゃんとしているということ
こんなコードでも動いちゃうんだな(10000回も更新して)
せっかく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);
ちなみにこのコードだと、処理の進捗状態とかを示す
ProgressBar本来の使い方には向かない。
処理本体が重くても軽くても、非同期で
ProgressBarだけ指定した時間で変化しちゃうからね。
このコード使った時は、ProgressBarを全く違う用途に使う場面だった。
>>236 そもそもBindingがUIスレッドで表示更新しているんだから、それが出来なかったらWPF自体成立しませんw
久しぶりにC#でGUIプログラムを作ろうと思ったら
WPFなんてのが出てたんだな。
Windowsフォームは過去の遺物になっちゃったの?
今C#でGUIアプリを作るならWPFで正解?
>>241 デザイン性求められてないならWinForm、
求められてるなら仕様変更を促してWinForm
WinFromsのWin32API由来の制限がうざいと思うならWPF、
特に困ってないならWinFormsだな。
WinFormsでできることをするなら、
生産性やプログラム動作速度はWPFよりWinFormsの方が良い。
WinFormsは過去の遺物だが、WPFも放置気味なので
WPFに期待してるとがっかりするぞ。
244 :
241:2013/12/16(月) 10:09:33.41
よくわからんけど2〜3年様子みれってことかな。
WPFは覚えることが多いから、お気楽プログラミングには向いていないが
凝ったことやりたくなったら重宝するよ
>>244 その認識で問題ない。
2〜3年後だったら、デスクトップ版WinRTも形になってるだろうしね。
デスクトップ版WinRTの状況次第では、WPFは完全にお払い箱になる。
Bindingとコントロールの合成の2点で採用する価値がある
MVVMは頑なにコードビハインドを否定してるのが意味不明
デザイナーなんて居ないことのが多いのだから学習曲線を急な勾配にする価値がない
頭の固い変な人(あるいはバカの一つ覚え)
が否定してるだけでMSの大元のMVVMに関するコラムでは何も言ってねえけどな
お前も気にしなくていいぞ
250 :
デフォルトの名無しさん:2013/12/16(月) 19:32:38.96
>>248 別にMVVMはデザイナーを分離するためじゃねえだろ
Viewん薄くするのは健全だと思うけどね
ageて書くようなことか
>>240 その批判はBindingが内部的に(長い)ループの中でプロパティを操作しているのでなければ成立しない。
馬鹿じゃないの。
253 :
デフォルトの名無しさん:2013/12/16(月) 19:35:43.47
ビューン
Viewを薄くするのはいいが、
それを実現するために、薄くした以上にViewModelが肥大化したら意味がない。
ViewとViewModel、どちらに書けばシンプルで短いコードになるか考え、
適切な方を選べばよい。
何も考えずに「コードビハインド無しで実装できた!」とか喜んでるのは・・・
目的と手段が入れ代わってると思うね。
255 :
デフォルトの名無しさん:2013/12/16(月) 19:54:13.19
目的と手段が入れ替わると・・・楽しい!
だよな!趣味ってそういうことだよな!
257 :
デフォルトの名無しさん:2013/12/16(月) 20:53:10.69
>>254 ViewModel使う目的は関心ごとの分離とユニットテスタビリティだろうからそれ行けるならファットになるのもいいとは思うけど。適当に分離すればいいし。
けどコードビハインド避けてViewを薄くするためにファット化するとかだったら意味ないのは同意。好きにコードビハインド書け。
大事なのはテストされたVMの挙動を単純に表示に変えるぐらいの薄さになってればいい。
258 :
デフォルトの名無しさん:2013/12/20(金) 21:27:32.98
.NET4.5のDataGridについてなんですが
検証処理するとき以下のようにValidatesOnDataErrors=Trueにして、チェックはIDataErrorInfoで行うようにしました
<DataGridTextColumn Binding="{Binding Data1,ValidatesOnDataErrors=True,NotifyOnValidationError=True}"/>
そうするとエラーが解消されてもValidation.Errorsにエラーが1個残ったままになるんですが
これ使い方間違ってますか?
>>258 エラーを解消した後、IDataErrorInfo.this[columnName] が呼ばれてるかチェックしてみれば?
Binding 経由でプロパティを変更した場合は勝手に呼んでくれるけど、
それ以外から変更した場合は INotifyPropertyChanged も実装して、エラーが解消したプロパティを通知せんとダメよ。
>>259 ありがとうございます。
エラー解消後に何も入力してなければIDataErrorInfoは呼ばれてません
Binding経由以外ではプロパティは弄ってないんです。どうも変な動きしてるんで他のコードは全部削除してみました
試しにValidation.AddErrorHandlerを使ってエラーのAdd/Removeを見てみたところ
Addが3回、Removeが2回みたいにRemoveされる回数が少ない、何を言ってるのかわからねーと思うが俺も何をされてるのかわからなかった状態です
後、妙な動きがもう一つ。
DataGridTextColumnのValidationRulesとかConverter例外とかでエラーが発生した場合は他のセルに移動できませんよね
これがIDataErrorInfoでエラーを起こした場合は他のセルに移動できてしまう、これは仕様なんだろうか、なんか統一性ない
>>260 IDataErrorInfo が呼ばれてないのは、エラー要因のインスタンスと、エラー元のインスタンスが別とかじゃない?
Binding 経由で呼ばれるのは入力先のインスタンスだけだから。
INotifyPropertyChanged を実装して、エラー解消時に更新を通知してやれば消えるはず。やってみては?
あと、後半のは意図した仕様だよ。
例外やコンバートに失敗した場合だと、Binding 先のモデルへの set に失敗している→エラー対応はビュー側の責任
IDataErrorInfo の場合は set は成功している→エラー対応はモデル側の責任
262 :
デフォルトの名無しさん: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つ目のみ広がっていく、ということをやりたいです。
よろしくお願いします。
263 :
262:2013/12/21(土) 11:19:21.90
うわぁぁ、すみません。
ColumnDefinition に MaxWidth プロパティがありました。。。
Global Hookしたキーコードを書き換えられないようで、SendInputも調べましたがどうも難し過ぎて手がでません
LL APIだと難し過ぎるんで素直にWPFコントロールを継承してイベントをoverrideしてるんですが、今度はbaseに渡すKeyEventArgsがReadOnlyとかなんなんですかこれ、嫌がらせですか・・・
なのでKeyEventArgsインスタンス生成時にKeyを渡せたので安心したら今度はbaseに渡すにはRoutedEventArgsがほにゃららとかマジ糞すぎて泣きそうです
KeyDownで押されたキーを渡さずに指定のキーを渡す方法を知っていましたら教えてください
> SendInputも調べましたがどうも難し過ぎて手がでません
とか言ってないで基礎から勉強しなおせ。
SendInputは簡単な方だぞ。
もっともっと難しい方法ならあるが、それ以上簡単な方法なんて無いって。
あっち書いてこっち書いて全部レス返し無しとかなに考えてんの
場当たり的にやってるからしょうがないね
そりゃあ糞人間だな
解決しました
実装書ける人が一人もいませんでしたね
さようなら糞PGさんたち^^
今は、これが、精一杯
期待する方が間違ってる
適切な学習方法がわからん
2年触ってるけど学習効率が極端に悪い
バインドの種類が多すぎて使い分けがわからん
XAMLに色々手を入れすぎて失敗してる気がする
普通のバインドとマルチバインドの2種だろ
XMLってのがそもそも筋が悪いんだよな
Jsonと違って定義が厳密すぎるんだよ
HTMLもそうだがマークアップなんてゴミだよ
しかもStyleやTemplateやResourceがJsやCSSと違ってめちゃめちゃ面倒くさくてどうしようもない
どうせならJs+HTML+CSSでStoreだけじゃなくデスクトップもウェブも統一したらええねん
ValidationRulesもマークアップ拡張に書けるようにしてくれれば、後は特に不満もない
定義が厳密なのはエディターとの親和性を考慮したんだと思うが
Blendが全く普及しなかったからね・・・
278 :
デフォルトの名無しさん:2013/12/22(日) 19:38:46.82
>>277 使いこなせてないが、MSの人が使ってるの見て使えればかなり生産性高いのは分かった。
HTML+CSSはHTMLのフロードキュメントをCSSで魔改造しているだけだからレイアウトエンジンとして筋が悪い
そもそもBlendって単語が久しぶりに出た気がする
一つ前は
>>57か・・・
流れぶった切って悪いんだが、ちょっと相談に乗ってくれ
DataTemplate使った画面遷移してるんだが、画面遷移を繰り返すと、
繰り返す度にViewが生成される関係でViewに紐づいたTriggerActionが
暴発するんだ
どうやら、
1:View1とView2が交互に入れ替わるとき、View1orView2内にItemsControlで
View3が表示される
2:View3にはActionTriggerが書かれている
って言う条件下で発生するっぽいんだが、解決方法がわからん
誰か分かる奴居たら頼む
最少再現コードというか、再現プロジェクトは↓
www1.axfc.net/u/3122746?key=wpf
気持ち悪いノリだな。
よくこんなノリで書き込むよな。
誰も解決に協力しないだろこんなんじゃ。
(別にそれでもかまわねーぜ!であるなら、そもそも書き込むなよと思うし)
>>281 InteractionRequestTrigger より ViewModel のほうが生存期間が長いから、
ViewModel の InteractionRequest に古い InteractionRequestTrigger からの参照が残ったままになってる。
(古い参照が削除されないまま、新しい View が作成される度に、イベントへの参照が追加されてる)。
解決には ItemView.Unloaded で DataContext = null しておけば良い。
いやそもそも喧嘩腰な方が悪いから
喧嘩腰…?
リソースディクショナリって入れ子出来ない?
コントロール1つ配置してControlTemplate と Style の2つの辞書つくって
ControlTemplate辞書からStyle辞書のリソース見るようにして
コントロールにControlTemplate反映させたんだけど
Styleの内容が反映されないんだよね。
ControlTemplate辞書内に<ResourceDictionary x:key="hoge" Source="style.xaml">
なんて記載してみてもだめ。
ControlTemplate と Style を1つの辞書に書くと問題ない。
Blendにコード生成させたのに「解決できません(キリッ」てなるwww
ResourceDictionary の入れ子は不可。ResourceDictionary.MergedDictionaries 使ってマージする。
要は結果的に辞書は1つじゃなきゃアカンてことな。外部参照はマージしなきゃ見えない。
>>290 入れ子不可、理解しました。
でもマージにして複数に分けてみたけど
「解決できません」が復活。
もちょっと触ってみます。
>>292 <Window.Resources>内で辞書定義してたけど
App.xamlの<Application.Resources>内で定義するようにしたら
エラー・警告もなくできました。
<Window.Resources>に置いていても
Blendの「プロパティ->ローカルリソース」からは
辞書内のリーソスが見えてたので認識してるもんだと思ってました。
勉強代に20時間くらい払ってしまった。
>>290-291 ありがとうございました。
>>293 プロジェクト直下に"Themes"フォルダ作ってその中に"Generic.xaml"っていう名前のリソースディクショナリを置いて、その中でマージするっていう手もあるぞ。
1アプリ=1プロジェクトならApp.xamlでもいいけど、もしスタイル適用対象のコントロールを別アセンブリ(DLL)に置くなら、
そのApp.xamlでマージできないし、"App.xaml"っていう名前のリソースディクショナリを置いても反応しないので、
そのときはこっちの方法しかない。
注意すべきはフォルダ名、ファイル名が固定だということ。
別の名前にしても反応しないから注意。
もしVSがPro以上なら「カスタムコントロール」プロジェクトを新規作成してみて。
プロジェクト直下に/Themes/Generic.xamlっていうリソースディレクトリがデフォで配置されてるから。
ResourceDictionaryって何に使うの?
DataContextだけじゃダメなのか
なんかWPFの壁=Xamlなんだよね
ついついC#で全部書いちゃう
カスタムコントロールもx:nameにしないとエラーとかイミフだし
XamlもっとわかりやすくしてよM$
XAMLはWPFの壁というよりは基本中の基本
>>295 ResourceDictionaryを使うとローカライズするとき楽になる
Window複数使っててスタイル共通にしようと思ったらResourceDictionary使うしかないし
DataContextにスタイルやControlTemplateとか持てないでしょ、いや持てるけどやらないでしょ
・・・普通に使ってるよ
コードビハインドからCommand.CanExecuteを見に行ってもいいよね?
極力シンプルにおいしいとこだけ使うようにしないとチームから批判くらいそう
それならVMでコマンド用意する意味ない気がするけどね。
コマンドじゃなくて直接モデルのプロパティを見ればいいわけで。
>>295 「DataContextだけでスタイル設定まで済ます」っていうのは、
Webでいうところの「HTMLの各タグにいちいちStyles属性でスタイル設定する」だと思うんだ。
データの内容に依存しないスタイルならWebでいうところのCSS、
つまりリソースディクショナリのStyleTemplateに設定したほうがいいよね。
もちろんリソースディクショナリを使わずに、View内の各コントロールのStyleTemplateを設定してもいいけど。
・・・どちらにしてもxamlは必要だけどね。
>>298 OKだと思うよ。
そのCommandをバインドしていないButtonの使用可否制御とかに使えるね。
俺ならCanExecuteの元メソッドの返り値をbool型プロパティにしてバインドするけど。
ただCommand.Execute()を生で叩くときは必ずCommand.CanExecute()で検証しないとね。
普通にVMのメソッドを呼べばいい話だな
OOPの作法的にはそれを呼び出そうとする側で実行できるかチェックするのもやめて
チェックはそのメソッド内でやったほうがいい
というか無造作に必ずCommand.CanExecute()で検証とか言うアホの存在が
レースコンディションで落ちるアプリを生む元なんだろうな
if (cmd.CanExecute()) cmd.Execute();の条件判断と実行の間でコンテキストスイッチが発生して
状況変わることなんていくらでもあるだろうに
303 :
デフォルトの名無しさん:2013/12/26(木) 12:53:08.38
というかその間に別スレッドから状態変更が起きる可能性があり、かつその際に落ちる可能性のあるようなプログラム書いてんじゃねーよ
それって別にCanExecuteに限った話じゃないし、
実行可否の判断ができないってことじゃねーか。どんな糞な作りしてんだよw
だからCanExecuteはそもそもUI上のグレーアウト表示とかの判断にだけ使うもの
Execute呼んでいいかどうかの判断に使ってはいけない
リソースディクショナリの話があったので
拾い物グラデーション辞書でも作るかと思ってググったら
geekswithblogs.net/Silverlight2/archive/2008/10/21/more-xaml-gradients.aspx
ここくらいしか見つけられんかった。
ExpressionBlendだとphotoshopのgrdファイル読み込むプラグインあるらしい。
コードビハインドで確認しようがXAMLで確認しようがUIスレッド上で動くだけだろ
安全性についての明確な違いなんてあるの?
308 :
デフォルトの名無しさん:2013/12/26(木) 21:51:50.83
>>307 だからそもそもCanExecuteで安全性チェックしちゃダメだって話なんだが(´・ω・`)
>>302 「ICommandの設計思想が糞」まで読んだ。
ってか、CanExecuteでの検証OK→Executeの実行の間では、
Execute実行の安全性は確保されるのが前提だろうに。
(おそらく)CommandManagerのほうもそれで動いてるんだろうし。
>>309 マルチスレッドのプログラムやったことあるのか?
専用に何らかのフレームワークでも準備しない限りそんなの無理だろ
もともとICommandなんてざっくりしてるのにそんなもん要求スンナ
WPFはどのタイミングでCanExecuteチェックしてるかも知らないんだろ
何の話をしてるのかよく分からんが、とりあえず
>>309の話は正しいよ。
最後の行は何言ってるのか分からんが。
というか、Executeは基本、UIスレッドからであればいつ呼ばれても大丈夫(実際に処理を実行するかは
別として)なように実装しないとまずいんじゃないの?
CanExecuteはGUI様に簡易で用意されてる物
実際の実行可否は日帳に応じてExecute内でチェックするもの
タイプボロボロ
CanExecuteはGUI用に簡易で用意されてる物
実際の実行可否は必要に応じてExecute内でチェックするもの
非同期処理がガンガン書き換えるようなプロパティをバインドすんなが正解だろ
コードビハインドでCanExcecute云々と全く関係ない話
>>310 マルチスレッドの各スレッドで同じExecuteを呼ぶのがそもそも間違ってると思う。
そのマルチスレッドそのものをラップしたExecuteを用意して、そのためのCanExecute、Commandを用意すべきでは?
俺の移ったのかタイプがボロボロw
CanExecuteなんてどれを参照してるかわからないのにどれをロックするんだ?
だからマルチスレッドプログラムをやったことないんだろと言った
CanExecuteなんて1秒間も何度も呼ばれてるのにExecute実行まで何をロックするんだ?
答えてみ?
STAThread属性なUIスレッドは逐次処理だっての
Icommand自体はWPFのバインドとは何のかかわりもない
CanExecuteが何を元に判定しているかなんてWPFは知らない
しょうがないから適当なタイミングでWPFがCanExecute呼んで画面に反映してるだけるだけ
何度呼ばれているかカウントして表示してみたらいい
知らん奴は驚く
的外れな内容でコーディングするよりコマンド使わないほうがいい
こいつUIスレッドが複数あるとでも思ってるのか
いつになったらUIスレッドと無関係だと理解するんだ?
CanExecuteで判断する内容はMに依存していたとして
コマンドからはMの更新を知ることができない
だからWPFはInotify使えないで地味にCanExecuteを適当に実行してる
ワーカースレッドが裏でプロパティ書き換えない限り不都合なんてないだろ
ワーカースレッドでCanExecuteが変更されるなら、
CanExecuteChangedもワーカースレッドで呼び出されなければならない。
だが、UIスレッド以外からCanExecuteChangedを呼んで良い、という仕様は文章化されていない。
よって、この動作は不正。
CanExecuteの変更をUIスレッドにマーシャリングしてやる必要がある。
何が言いたいかっていうと、マルチスレッドkが〜とか言ってる奴が
一番マルチスレッドを理解していないって事だ。
低レベル過ぎて泣ける
相手にして損した
ugayaでもかずきでも好きな奴に相手してもらえ
鼻で笑われるだけ
> コマンドからはMの更新を知ることができない
知ることはできない、じゃねーよ。
お前が更新を通知する実装をさぼってるだけだろ。
可能なら通知を実装する、
通知がどうしても不可能なら、
CanExecuteは常にtrueにしておき、
Executeでは何も実行しないこともありうる、って仕様にすべき。
かずきはともかく、ugayaとかスレッドがわかってるつもりで
全然わかってない奴の代表格じゃねーか。
>>328 つか、ControlTemplateでしっかりグレーにするのが面倒になって、ついそういう仕様にしたりする
見た目の事?
だったら、無効状態だと透明度を0.4位にするってのが簡単なのでよく使ってる。
最近はどうでもよくなってUIのロックしなくなった
>>331 おお、そんなてぬ×素晴らしい方法があるとは
使わさせてもらいます
てぬ×って何!?
手抜き
無効にするんじゃなくて、○○という理由で処理を実行できません、ってメッセージを出す方が親切だよね
>>336 手抜きに独された意見かもしれないけど
ユーザーは半透明は使えないって学習してくれる
見て無効かわかるし見えないよりは親切だと思う
てぬx誕生の瞬間を見た。
手で抜いてもらうことか
流行らないし流行らせない
341 :
デフォルトの名無しさん:2013/12/28(土) 07:23:34.04
XAML/WPF悪く無いとは思うんだけどねぇ…
なんかスタイルが気に入らんのだなぁ…
かといってWinFormsのバインディングも糞だし…
結局どっちがいいの?
急に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)
343 :
342:2013/12/28(土) 12:17:57.80
理由はよく分からないけど原因のコードは分かった
Livetを参照しているdllをAssembly.LoadFrom()で読んでると
Livetを利用している他のWindowを表示すると例外が発生する
何これ
複数のLivetが混ざってるんじゃないの
DLL1とDLL2の両方で別々にLivetのソースを含めたりしてないか?
もしそうならLivetを除去してLivetだけ別のDLLとしてコンパイルしてそれを参照する
っていうかLivetなんか使うな
そもそも尾上のLivetが絶賛される出来ならM$がヘッドハントするだろ
ソーシャルゲーなんて作ってる会社にいるってことはまぁそういうことだろ
346 :
342:2013/12/28(土) 13:07:41.04
>>344 あー。
そうみたいです。
loadするdllは別フォルダにあって、そこにもlivet.dllがあったのが問題でした。
つかっちゃだめですか。
お騒がせしました。
linuxを作ったライナスは今どこの会社にいるんだっけ?
敷居の高さからかそもそも話題が少ない中で
広報活動してくれた子らが注目を集めちゃっただけ
なんか過去ログ見ると1年以上前から尾上に粘着してるのが何人かいるみたいだけど、
こういう奴って自分が他人からどう見えるのか想像できないのかね。
馬鹿じゃなかろうかと思うんだが。
想像できないからやってるんだろうと想像できない人もレベルとしては大差あらへんよ
想像できないからやってるんだろうと想像できないのではなく、
皮肉を言っているんだよ。通じなかったかな?
皮肉を理解するには高度な知的水準が必要だというし、仕方ないか。
Livetみたいなのって分かってる人が下の何も分かってない連中に使わせるもんで、
分からなかったら分かってる人にすぐ聞ける環境でないと意味ないんだよな
外野がソースだけ持ってきて
>>344みたいに問題解決しながら使えるんなら
そもそも別に必要ない
お前349と別人だろ
似てない
釣りならもっと上手くやろうや
少なくともGoogleやM$でバリバリ開発してる人はこのスレにこないことは確かだな
MSはともかくとして、
GoogleってそもそもWPF使ってる製品あんの?
356 :
デフォルトの名無しさん: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の
高さいっぱいまで伸びて欲しいです。
どう記述すれば良いでしょうか?よろしくお願いします。
DockPanelかGridでやれ
358 :
デフォルトの名無しさん:2013/12/30(月) 10:39:15.45
試したけどこんな感じで行けると思う
dock
stack top
grid
grid
grid bottom
あとBottomもいらん
追加削除変更が楽だから使ってんだと思って残した
数量固定なら言われてるとおりイラン
363 :
356:2013/12/30(月) 11:51:30.07
>>357-361 ありがとうございます。
例えばGrid2をCollapseにしたときに
Grid1のすぐ下にGrid3が来るように
(Grid2以降の位置が上にずれる)
する方法を調べたらStackPanelを使う方法が
見つかったので、それで実装しようと
頑張っていました。
今は出先なので、帰宅してから
DockPanelで調べ直してみます。
ありがとうございました。
364 :
356:2013/12/30(月) 11:52:27.03
>>362 意図を汲み取っていただきありがとうございます。
提示していただいたやり方でやってみます。
考えてみたら一般的な使い方だと上手くいかない
撤回する
そういやRowDefinitionのHeightをVMから弄ったらうまく動かなかったんだが
同じコードをコードビハインドから動かしたら正常動作した
アレは何だったんだろうな?
367 :
356:2013/12/30(月) 17:22:43.03
DockPanelとGridのみで出来ました。
ありがとうございます。
368 :
デフォルトの名無しさん: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で一発で書けたら良いと思っています。
よろしくお願いします。
Binding.StringFormatでいいんじゃね
単純に2つTextBlockを並べたらいい
Labelが使いたいんならLabel-StackPanel(Horizontal)-TextBlock×2
371 :
368:2014/01/03(金) 21:50:05.95
>>369-370 ありがとうございます。
まだまだ偏った考えしかできていなかったようです。
非常に勉強になりました。
(今回は
>>370さんの方法で書きました)
そんなことで良かったんかいw
リソースに設定するくらいだから複数個所から使いまわすのかと思った
TEXT_AとBは複数箇所で使い回しているのですが
その流れでCもリソース化しようとしていました。
そもそも文字列をリソースにしてそこにバインドする必要あるの?
VMに文字列型のプロパティ持たせてそこにバインドする方がよほど簡単だと思うけど
いい加減Xaml捨ててHTML5にするか別のInterface Builder作って欲しいなー
XMLってのが筋悪いんだよな、何故XHTMLが人気でないでHTML5が人気出たかって簡潔で扱い易いからだよ
SGMLをスーパーセットに派生してもXMLやXHTMLはDTDが厳格すぎんだよね、ぶっちゃけ非常に扱い辛い
Xamlも扱いが非常に面倒くさい、未だにWinFormsの人気が衰えないのは化石PGが○○とか関係ないよ
というよりも投資する価値に懐疑的というか。
MSもSurfaceだったり電話だったりでプラットフォーム広げるのに頑張ってはいるんだが…
ぶっちゃけwinformである程度のことができるからな
新しいものに移行する必要がまったくないんだわ
OS側でサポートしなくならない限り亡くならないよ
wpfでも、winformでできることをやるなら大して面倒でもないしややこしくもない
挫折しそうな人は、グリッドやパネルのレイアウトだけ勉強して、イベントドリブンで組めばいいのにな
MVVMもイベントドリブンです
データドリブンじゃなかったの?
ユーザーの入力はコマンドだから実質イベントだし
モデルからMVVMへの通知もイベントで受けるんだから
一般的にイベントドリブン型と呼ばれる所以の部分はMVVMだからって特に変わりはないよ
MSが宣伝文句としてたまに使ってるデータドリブンってのはデータが中心のアプリという程度の意味で
イベントドリブンと対立するものじゃない
そもそもイベントドリブンって対話的プログラムって意味だろ
だったら現代のプログラムでイベントドリブンじゃないモノなんて存在しないだろ
そのHTML5にしてもデザインやレイアウトはCSSに完全に依存
ドメインロジックやアニメーション等の動的な要素はDOMやJavaScriptに完全に依存
実際にマークアップは要素や属性の定義だけの最小限だしね
その点XAMLは可読性の著しく低いマークアップでずらずら定義されるから筋悪いってのは同意
XMLとJSON比較してもJSONが人気なのは簡単で書き易いからだろうし
378かが言いたいのは、VMとか用意せずにVだけで
<Button Click="○○"> みたいな感じで
Vのコードビハインドで直接処理書いちゃうみたいなので
全部済ませちまえってことだろ
それだとWPF使う意味あまりないけどw
意味ないっていうか絶対にフィージビリティは低いよね
386 :
デフォルトの名無しさん:2014/01/08(水) 10:10:11.11
>>383 そこまでXAMLのアニメーションとか筋悪いかね。
コードビハインド一切不許可だとどうかとかは思うけど適度に織り交ぜていいならロジックも結構宣言的にかけていいと思うんだがなぁ
といっても綺麗にかけるようになるまでの敷居がはるかに高いのは否定しないけど。自分も未だによく分からん(´・ω・`)
MVVMの有用性をWPFの利点として挙げるとして、
そもそもMVVMを実現する為にPrismやLivet等のフレームワークがほぼ必須な時点でおかしな話。
誰も有用性なんか言ってなくね…?w
便宜上V、VMとかいう単語は出てるけど、ただのデータソースとxaml だと思えばいい。
良いとこは使えばいい的な。
最近WPFの勉強を始めたんだけど、
例えば数万件のPointデータを元に絵を描画する場合でも
データバインディングを使ったほうがいいの?
まだデータバインディングってのがよく分かってなくて、
XAMLで記述するってのがすごい違和感あるんだけど。
office の差し込み印刷みたいなもんだと思えばいいw
マーキングしてある部分に値が自動的に突っ込まれる。基本はそんだけ。
まぁ処理もバインドできるけどな。値の整形とかも。
つーか、一通り勉強した方がいい。依存関係プロパティとは!?レベルから
>>389 残念ならが、数万件のデータを扱えるほどWPFの性能は良くない。
最低でも、バックグラウンドでレンダリングし、レンダリング済みの画像を
Bindingするデータとする必要がある。
リアルタイムで更新したいと思ったら、Bindingを使用しない生のWPFでも不十分で
DirectXと連携する必要がある。
昔なんかの記事でWPFアプリケーションは高DPIに完全に対応してるから拡大鏡で見るとフォントが最適なスケールでレンダリングされるとかあってへーと思った記憶があるんだけど
今Windows8.1で試してみたらレンダリング済みのフォントを拡大したようにしか見えないんだけどどういうこと?
TextOptions, RenderOptions, UseLayoutRounding
あたりをいじった上で最適に見えないなら
Windowsのアンチエイリアスがしょぼいってことだろうな
なんか8から8.1にしたら(恐らく誤動作で)ボケて表示されちゃうアプリが増えた気がする。
8.1だとなぜだかボケる
textboxがよくぼける
htmlがアプリケーションのプレゼンテーション言語として優れてるとは到底思えない
HTMLが劣ってるんじゃない
処理系がクソなんだ
400 :
デフォルトの名無しさん:2014/01/08(水) 23:30:18.70
>>398 別の用途のものをゴニョゴニョ拡張していまにいたってるしね。
Internetとデスクトップの統合!( ・`ω・´)キリッ
HTMLは良い
CSS差し替えだけでレイアウトが大幅に変わる
XAMLはそうもいかない
WPFはPresentationって名前が示す通りビューのフレームワークだからそこで大きなレイアウト変更を吸収する必要性がない
まあリソース使えばなんとでもなるけど
404 :
デフォルトの名無しさん:2014/01/09(木) 12:59:36.47
>>403 意味分からん。
>>402 自分も要素の定義とレイアウト、見た目は分離してた方が良かったんじゃと思う。より分離できるし。
まぁロジック的な要素もあるから難しいかなー
HTML+CSSって言うけどレイアウト計算の絡むところは全部JavaScriptにやらせるんでしょ?
WPFの勉強が嫌になってきた。
WinFormとC#で書けばやれることを何でわざわざXAMLで書かないといけないんだ?
WinFormで出来ないことをやるための練習
408 :
デフォルトの名無しさん:2014/01/09(木) 13:30:57.79
>>406 まぁMSはこれから全部XAMLになるだろうしねぇ
WPFで作ってるけどXAMLは数行しか書いてない
WinFormのListViewがバインディングできてればWPFというかXAML系に手を出さなかったかもしれん
Formに出戻りしてListView仮想モードにしてDrawItemイベント時に
ドット区切りのバインディング取ってくるようにしたわ
昔はCollectionをDataTableに変換してた
>>408 MS自身がWPF使うときってWPFの原型を留めてないくらいにがっつり独自フレームワーク使うからなあ
というよりWPF自体どっちかというとそういう大袈裟な使い方をするように設計されていて、
GUIのしょぼい業務アプリの類はさっさとHTMLに移行してほしいんだろうな
低レベルな部分の仕組みは結構イケてるんだよね。
高レベルな部分の作りこみは全然ダメだけど。
高レベルな部分を丁寧な独自実装で置き換えると、
悪い評判だらけのWPFとは思えないような、軽快かつ見栄えの良いアプリも作れる。
手間がかかりすぎるので、使える場面は限られるけど・・・。
VisualStudioはWPF製だけど、WPFの悪い部分がしっかり改善されてるんだよな。
メニューの挙動のおかしな点もないし、
TreeViewのデザインもかっこいいし。
GridViewもWPF標準の物の違ってまとも。
WPF標準のコントロールもこれくらい品質が良ければ良かったんだが。
>>401 そういえば、エクスプローラのUIをブラウザと統合して糞使いにくくなったのはどうにかならんかなぁ。
XPまではまだ旧来のUIで使えていたが、7になってどうにもならなくなった。
いや今のエクスプローラはIEコンポなんか使ってないだろ
ボタンをリンクっぽく描画してたりするだけで普通のWinネイティブなアプリだよ
417 :
デフォルトの名無しさん:2014/01/10(金) 00:44:15.71
>>415 今そんな使いにくいところあったっけ?
普通のエクスプローラとしてしか使ってへんわ
IE5までの話だねw
しかもWin9x限定w
どこの浦島太郎だよって
>>417 エクスプローラのウィンドウとフォルダの対応関係が切られて、位置やサイズなどを
覚えてくれなくなったのがかなり不便。
Windows3.1あたりのファイルマネージャに先祖返りしたのかも知れんが。
420 :
デフォルトの名無しさん:2014/01/10(金) 02:33:35.57
>>419 どういう風に覚えてたのか忘れちゃった。すまそ(´・ω・`)
前ほどイミフな自動カラム選択とかフォルダによってビューが変わるってのなくなった?
前より使いやすい気がしてる。
右側でフォルダ展開すると、左のツリーのアクティブフォルダが
必ず下側の固定位置にいちいちスクロールするのが気に入らん…
下領域空いててスクロールの必要が無いにも関わらずだ。7からなんだが
>>420 画像フォルダとか音楽フォルダとか勝手にフォルダの種類を判断するやつかな?
あれ、よく判断を間違えるし設定を変更しても忘れてくれるし、確かに意味不明だな。
サブフォルダーを開いても、ツリービューが追従しなくなったのはどんな理由なんだろうな
使いにくいんですが
それは設定で変えられる
フォルダオプションのナビゲーションウィンドウ>自動的に現在のフォルダまで展開
デフォルトを変更した理由は分からん
ライブラリみたいな仮想フォルダとの兼ね合いかね
仮想フォルダよりNASとの兼ね合いかなとも思う
そんなの関係ないでしょ。
恐らくMSなりにライトユーザーに媚びたつもりなんだろうと思うよ。
たぶん調査の結果、ほとんどのユーザーはフォルダツリーをツリーとしてではなく、
ドライブや仮想フォルダへのショートカットとして使っている、みたいなことになったんでしょ。
で、フォルダを階層を展開しちゃうとその「ショートカット」がクリックしづらくなる、みたいな。
田ミ + E でエクスプローラを表示した時にフォルダツリーにフォーカスが当たってないのもそういう流れだと思う。
使いづらくてしょうがないけど。
>>422 レジストリで無効にすると勝手に違う種類に変わったりしなくて快適だよ。
>>418 Win9x限定じゃねーぞ
Win2kもXPもエンジンはIE
XPからはカスタマイズができなくなったというだけ(folder.httは使える)
Vistaから完全独自になって
7からはリストビューすらコモンコントロールじゃなくなった
429 :
デフォルトの名無しさん: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でも構いません。
詳しい方、何卒よろしくお願いします。
xamlでtriggerを使う
ザッツオール
トグルボタンってなかったっけ…
433 :
デフォルトの名無しさん: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>
ImageBrushに名前を付けたら、分離コードでいじり放題
435 :
デフォルトの名無しさん: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フォームアプリ感覚でやると、
なかなか難しいなと思いました。。。
>>435 その書き方ならborderのBackgroundを{TemplateBinding Background}にして、
ButtonのBackgroundに1.pngのImageBrushを指定すればいけるような気がするけどどうだろう?
ちなみにそのやり方だとマウスオーバー時に色がかわる、とかフォーカス時に点線が表示される、とか、
元々ある機能がなくなってると思うんだけど、それは構わないの?
>WPFは、Windowsフォームアプリ感覚でやると、
これがそもそも難しくしてる原因だ
いやいや、やろうと思えば基本的にほとんどWindows Formsと同じ感覚でも書けるでしょ。
レイアウトとグラフィック以外は。
アニメーションはFormにないし
439 :
デフォルトの名無しさん:2014/01/13(月) 18:51:14.44
MVVM試行錯誤しながらやってるんだけど、これうまく作るとビューの見た目やコマンドを実行する場所をいろいろと好き勝手にできて良いね。
フレームワーク使わずBindableBaseだけショボイの作ってやってるけど。
ItemClickをコマンドにどう結びつけたらいいんだとかわからんところも多々あるけど、適度にコードビハインド織り交ぜても十分フォームより色々疎結合できて良い。
大きなアプリ作るならコンバーターやコマンドは避けたほうがいい
TreeViewのContextMenuのIsOpenをBindingすると、必ず起動一発目の右クリックでメニュー出すと直ぐ消えるってのはなんだろうね
対策あったら教えて下さい
442 :
デフォルトの名無しさん:2014/01/13(月) 21:08:11.18
MVVMのコマンドは拡張性がないからなあ
大きなアプリだとコマンドパターンでコマンドのクラス自体に処理を書いた方がいい
Converterは必要があれば積極的に利用した方がいい。
プリミティブな1データを多様に表現、活用する事ができる。アプリの大小は関係ない。
ただMultiConverterのConvertBackは使いにくい。
>>445 Prismはそのへん考慮してないよ
Webと変わらんような業務アプリのサンプルだからね
コマンドは使いにくいなーとは思うけど、コンバーターは結構便利に使ってる
コマンドよりビヘイビア書かないとバインド出来ないプロバティーが嫌だ
449 :
デフォルトの名無しさん:2014/01/14(火) 04:05:04.81
ビヘイビアが未だによくわからん。使い所とか。
別々の条件から同じことしたい時はトリガーとアクションに分けて、
常に同じ組み合わせならビヘイビアって感じでいいと思う
ガン・・・、エクセルでたとえてくれ
452 :
デフォルトの名無しさん:2014/01/14(火) 11:29:25.39
>>450 この辺ストアだとまた違うからな…今全部できるようになったんだっけ?
揃えてくれよママン…
453 :
デフォルトの名無しさん:2014/01/14(火) 21:37:46.94
>xamlでtriggerを使う
で詰まっていた者ですが、おかげさまで
実装方法が解りました。
WPFは、使いこなせたら、
確かにフォームアプリより便利そうですね。
勉強になりました。
ストアアプリを開発しています。
Bindingで、
"文字列A" + 項目Aの設定値 + "文字列B"
(※文字列は、ローカライズ対応)
をTextBlockに表示したいと考えています。
調べてみてもどの様にしたらよいものか困っています。
助けていただければ幸いです。
>>455 以外にも Run を使った方法もあるよ
<TextBlock><Run Text={Binding 文字列A} /><Run Text={Binding 項目Aの設定値} /><Run Text={Binding 文字列B} /></TextBlock>
そういえば.NET 3.0の頃はRun::Textが依存関係プロパティじゃなかったなぁ 狂気の沙汰
Blockの中にRunがあるんだからそれにバインドする方が変
特別なことをしないならStringFormatがまともな手段だけど別のフレームワークで
無くなったり意味不明
変かな?
数値部分だけ色変えたいとかさ
460 :
454:2014/01/15(水) 17:05:53.82
ありがとうございます。
>>456の方法で行けそうなんですが、ローカライズの文字列では表示されません。
デフォルトで与えた文字であれば、表示されます。
もう少し格闘してみます。
>>368-371 の方法も考えましたが、ローカライズで文字列の長さが変わった時に
調整がメンドウなので…。
(うまい方法があるのかもしれませんが、稚拙なものでスミマセン。)
>>460 ローカライズってどういう風にやってるの?
Bindingでやろうとしてるってことは動的に変更される文字列を表示しようとしてる?
ロケールによってBinding先を切り替えるとか?
ちなみにストアアプリは専用スレあるよ?
どういう風にってResourcesを言語別に用意以外に
方法あったっけ?
>>462 普通のやり方ならuidで指定するからBindingなんかしないし、
ローカライズされた文字列が表示されないなんてことにはならないでしょ?
そうか?
俺は普通に以下のように書いてるけどな。
<Label Content="{Binding Source={StaticResource resources}, Path=hogehoge}" />
表示されないってのは分からんけど。
WPFでDataGridにバインドさせて使うときって列の定義とかはどうしてる?
普通にXAMLで
というかデータグリッドはWinFormsのを使ってる
WPFでやるんならデータグリッド貼って終わりなんて安易なクソUIやめてListViewで作れよ
>>464 hoge厨らしい書き方だな
電子ゴミ作って楽しいか?
腰痛めて病院いったらウォーターベッドみたいなんに寝かされた。
振動で腰を直すやつな。
振動の強さが「強」「中」「弱」の三種類あって、
最初に「弱」で始まったんだけど全然振動が伝わってこない。
看護婦さんに「あの、全然感じないんですけど」って言ったら
「じゃあ「中」にしときますね。何かあったらナースコール使って呼んでください。」
って言われて「中」に切り替えて看護婦さんどっか行った。
しばらく待ったけど全然振動しなくって ナースコールで看護婦さん呼んだら
「じゃあ、「強」にします。」 って言われて「強」に切り替えた。
それでも全然動かなくておかしいなあとか思いつつふっと横を見たら
隣に寝てたよぼよぼの爺さんがガタガタガタガタ猛烈に振動してた
WinFormsのコンポーネントをScrollViewerとかに埋め込んだ時クリッピングされないで
はみ出ちゃう問題マジで何とかならないのかなぁ・・・。
市販のコンポーネントなんてWinFormsばかりだからマジで困るぜ。
無理だろうね。コンポーネントの方がWPFに対応するのを期待しよう。
グレープシティやインフラジスティックスのWPFコンポーネント使えばいいんじゃね?
>>471 だよねぇ・・・。最初からこのコンポーネント使う事決まっていれば色々考えようもあったんだけどね。
まぁ、そもそもWPF選んだ時にこの不具合知らなかったんだけどorz
>>472 大人の事情で決まった会社の固有の製品なのでそういう代替え品ではダメなんだよ・・・
>>473 大人の事情で決まった製品って大抵ろくなのないからなぁ
事情説明して何とかするよう努力するべし
どうしてもそのコンポーネントを使わなきゃいけないのなら、
HWNDによるクリッピングを利用することは不可能ではないけどね。
独自パネルA (WPF) > 独自パネルB (WinForms) > コントロールC (大人の事情)
って構造にして、
BをScrollViewerの可視範囲内に配置し、
Cをクリッピングなしの範囲に配置することで
BのHWNDによるっクリッピングを有効にすることはできる。
スクロールする度に再レイアウトすることになるので、性能はお察しだけど。
大人の事情ってどんな内容かな
勤め先がFとかNとかN(2回目)とかHだとか
>>476 俺はFだけど、大人の事情がない会社なんてあんのか?
大人の事情がない会社はない
ただしコンポーネントの選択に関しては、大人の事情など断固拒否しますよ
(経済的事情を除く)
>>466 XAMLで列を定義ってなんか疎結合って感じがしなくなる
>>479 意味不明
ビューが表示対象のデータ項目に依存しなくて一体何を表示するというのか
>>477 Fか…
Fはjavaなどの社内フレームワークが何種類もあると噂に聞く…
>>479 XAMLよりVMに書いたほうがいいと思う
グリッドで入力する場合は検証も行わないといけないしね
>>475 あーあー、WinFormsを挟む発想は無かったわ。面白そうね。今度試してみよう。
結局見た目とイベントをバイパスするproxyみたいな物作ってしのいだわ。
思ったよりちゃんと動いているけど、あまり動き無い物だから出来る話だぁね・・・。
今更WinFormsなんぞ使いたくないし頑張りますヨ〜
ここに質問する無いようなのかわからないけどWPFのプログラムでMEF使う時に
Importってどのタイミングで行われるか書かれている資料ってあるかな?
今はとりあえずLoadedのタイミング以降でImportしたオブジェクトにアクセスしてて
特に問題は無いけど何かモヤモヤするんだよなぁ・・・。
WPFは関係ないし、MEFのドキュメントで自分が使ってるImport方法の説明を読めとしか。
DIならAutofacでも使ったほうがいいよ
MEF使いづらい
なんだとこのファック野郎
488 :
デフォルトの名無しさん:2014/01/23(木) 22:02:28.47
もうMvvmCross使えよ(´・_・`)
どうもこういうクロスプラットホームの奴って今までも色々あったけど
流行った試しないし眉唾なんだけどそんなに良いの?
そもそも共通プラットホームにしたい様なもの開発してないケドWPF的に
作りやすいとかあるなら考えてみても良いかなぁ。
いや全然クロスプラットフォームじゃないぞ
Windows(x86)のVista以降でしか動かん
それXamarinの話ではなくて?
まー、サポート切れるとはいえXPはまだ捨てられないしねぇ・・・。
俺的にはいらないけど商品開発の場合は捨てる選択肢まだ無理だわ。
492 :
デフォルトの名無しさん:2014/01/23(木) 22:59:53.03
>>489 今見てる限りだとだいぶ現実的なアプローチだと思う。
物によるけど多分8ー9割のコードは共通化可能。
けど作りやすいか言われるとどうかなー。DIの仕組みとかあるけどこういう風に作れとか制限出てくるし。WPFだけでいいなら普通に作った方がいいかも。
>>490 今更XPか(´・_・`)
>>491 Xamarin専用じゃないよ。XamarinがiOSや泥でC#を使える下地を作ってくれたのでそれを利用してる感じ。MVVMでの開発をどのプラットフォームでもできるようにする基盤。
案件によってはまだXPに縛られるんかね…
>>490 win、wp、その他linux,mac,ios,android(xamarin)ってことじゃね?
最初の2つ以外はxaml無関係だけど。
向き不向きは詳しい人に任せる。
>>492 80-90って、えらいUI少ないね。それで済むものには向いてるかもね。
495 :
デフォルトの名無しさん:2014/01/23(木) 23:20:41.65
>>494 UIもVMまで共通化したらそれぐらいにならん?
まぁものによると思うけど。
実際VM共通化なんぞ出来るんか?結局Viewだけ差し替えるとか幻想でしょ・・・
VMはV依存度は高いもんなぁ。このV用の特別なナニカってのは必ず出るだろうし、
無理に共通化しても見通し悪くなりそうだ
498 :
デフォルトの名無しさん:2014/01/24(金) 04:03:08.59
ゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミwwwwwwwwwwww
>>497 どちらかというと、Vに求められる機能が多い(ことが多い)ので、VMが重くなる感じかな。結論は変わらないけど。
DrawingContext.DrawTextって垂直方向の配置を指定できないんだね。
っていうかWPFってどうでもいいようなギミックは満載だけど基本設計が本当ウンコだな。
拡張メソッド作ったら一行で終わるレベルの不満が基本設計ですか
WinFormsから入った奴は最初DrawingContext使おうとするよね
滅多に使わない低レベルAPIだぞあれ
むしろVB6じゃあるまいし、UI要素並べて全ての問題に対応できるわけがないでしょ。
いやDrawingContextってむしろUI要素並べるだけのラッパー的なAPIなんだが
ついでに言えば、FormattedTextなんて文字列と書式を合体させたオブジェクトを
引数に取るから、同じ書式を使いまわすなんて基本的なことも出来ない。
こんな仕様を考えた奴は馬鹿としか思えない。
WPFだからって無理しなくてもSystem.Drawing参照してもいいんだよ?
>>505 DrawingContextはWPFのもっと高レベルなところと同じく「保持モード」のAPIだ
変更したい時だけ使う
Drawing並べるのと同じなんだけどちょっと書くの面倒だからSystem.Drawing.Graphicsっぽくラップしてあるだけ
>>507 そんな風な擁護をする奴が絶対にいると思ったけど、
プログラマにとって重要なことは目的をより直截的に実現する手段が用意されているかどうか、
それだけ。
保持モードだからそういう仕様になっているという事情は理解はできるが、
それが優れているとは思えない。
だからDrawingContextは低レベルAPIであって
目的をより直截的に実現するためのものではないという話でしょ
WPFは誰かがライブラリを作ってくれるのを口開けて待ってるだけの人間には使いこなせない
> プログラマにとって重要なことは目的をより直截的に実現する手段が用意されているかどうか、
> それだけ。
ワラタw ちゃんと勉強する事も自分の頭で考える事も大事だよ。
使い方わからんからとすぐウワーってなる奴はプログラマには向いてないだろ。
ありあわせの組み合わせるだけの人は単なるオペレータ。
>>509 だから、UI要素をXAMLやコードで並べるだけじゃ実現できないから低レベルのAPIを
使ってるわけだが、その低レベルAPIがあまりにも柔軟性に欠けるといってるんだけど。
例えば画面上の任意の位置に、矩形内の水平・垂直のAlignmentを指定して数百個文字列を
描画したい、パフォーマンスが重要、ってケースでDrawingContext.DrawText以外の選択肢が他にある?
>>511 わからんなんていってないけど。
馬鹿だろお前。
>>512 何が分からんのか分からん
普通に矩形要素の中にDrawTextでいいだろ
グリッドならTextBlockの数百個程度は当たり前
まあパフォーマンスを直截的に求めてDrawingContextって時点でWPFあるあるなんですけどね
っつーかどうせ似たようなロジックばかりで作ったライブラリ使いまわすんだから粗結合とかどうでもいいよ
それより如何に簡単で書き易くパフォーマンスが良いかのほうが命題じゃないか?
WPFってパフォーマンス悪い・面倒・やりたい事がすぐできない
WPFは手間かけて基礎から組み上げるもんだ
楽に作りたいならWeb行け
出来ることが増えるのは良いことだし、その為に新しいフレームワークを覚え泣けれならないのは
当然のコストではあるが、問題はWPFに関してはコストに見合うゲインがあるとは
思われていないことと、GDI/GDI+より明らかに劣っていたり、出来なくなっていることが多すぎること。
そうだね
そんなゴミはさっさと見切り付けてサヨナラしようね
戦力の逐次投入はダメな戦術の代表だけど、WPFについて言えばその戦力の逐次投入にすらなってない。
今のITはリーンスタートアップだとか
>>521とは真逆のことが言われてるぞ
>>522 それはぶっちゃけ我々作る側に都合がいい論理(言い訳とも言う)であって
アウトプットを使う側の視点の議論ではない。
WPFってむしろ一括投入による失敗の典型例だろ
ASP.NET MVCとか最近のMSは逐次フィードバック反映を重視しだしてうまく行ってるぞ
>>524 最初の段階である程度使い物になる完成度のものを投入した上で逐次改良を継続するのはいいが、
使い物にならないものを一旦公開して、足りないところは徐々に補っていくからみんな使ってって言っても
そうは問屋がおろさない。
逐次投入がダメ戦術ってのはそういう意味。
繰り返しになるけど、WPFはその逐次投入にすらなってない。
526 :
デフォルトの名無しさん:2014/01/25(土) 21:38:17.20
使えない言ってる奴が使えないやつなだけじゃねーの
また挫折しました。もう無理です。
528 :
デフォルトの名無しさん:2014/01/25(土) 21:54:32.09
まあふぉーよりははるかにいろんなもの疎結合できていいけどな。
できないことが増えた言うけど逆にできることが増えた部分は無視すんのか。
529 :
デフォルトの名無しさん:2014/01/25(土) 21:55:04.38
ふぉー>フォーム
ム無しーですね
>>526 違うと思うよ。
特定の人の悪口を言うのは気が進まないけど、某尾上氏みたいな人が
「王様が裸に見えるのはお前が馬鹿だからだ」みたいな発言が出来るのは
実は王様が裸であればこそ。
>>528 できないことが増えたとは言ってないけどね。
旧製品の置き換えをうたってる後続品に旧製品より劣る部分があれば、
そりゃ置き換えは進むはずがないよという話。
そもそもサードパーティ製のコントロールが必要な時点でWinFormsもWPFも完成度って点では大差ないよ
カスタマイズしたいならWin32API必須ですがなにか?だからな
.NETはCocoaと比較してGUIがゴミ過ぎるんだよ、JavaFX8も忌まわしきXML拡張のFXMLだし、JDK8もしょんぼりなんだよな、匿名メソッドじゃなく匿名クラスとか存在価値がイミフ過ぎるわ
XPの買い替え需要でWinじゃなくMacに流れてるらしいし、マジでこのままデスクトップでもMacが幅をきかせ始めたら俺はObjective-C使えるから嬉しいけどなw
WPFで出来ることが増えたって、大して増えてねーじゃん、WinFormsと比較してそのちょっと増えたことがコストに見合わないんだよ
旧製品より優れたところにメリットがあれば、旧製品に劣る所があっても置き換わる可能性はある
まず優れた所を探せ
そしてそれがメリットかどうかを考えろ
命令口調の奴って何なんだろうね。意味が分からん。
っていうかどういう育ちしてるんだろこういうの。
10年前ぐらいに開発始まったものに文句言ってるんじゃないw
536 :
デフォルトの名無しさん:2014/01/26(日) 00:26:44.05
>>532 MacはiOSに比べてUIまともなのか?
iOSはUI開発糞だろあれ
Macで開発って悪夢だな
Qtでいいよもう
Qtはいいよね サポートOSも多いし
qtも5でかなり変わったし、ライブラリでかくなったしなあ。
541 :
デフォルトの名無しさん:2014/01/27(月) 10:13:20.47
qtは柔軟で作りやすいのん?
びばのんのんのん
Qtは高レベルなコンポーネントの完成度が非常に高いけど
使い方はWPFの感覚からすると結構泥臭い
.net死んでまうん?
3Dというか映画界隈はLinux版ありきなこと多いからな
Linux、Win、MacならQtはガッチリだろう
LinuxのQtはすげえ品質低いぞ
おまけ程度に考えた方がいい
>>544ぐらいできたら十分じゃない?
それとも上に上がってるのはQtとは名ばかりだったりする?
QtてKDEのベースなんだけど。
それが品質ぼろぼろならどーすんだw
>>547 Qt製の2ch Viewerが落ちまくったの良い思い出。今も不安定なままなんだろうか
3DソフトってQt使えるの多いんだな。
検索したらどのソフトもユーザーが当たり前のようにQt呼び出してるわ。
こんな業界あるんだな。
メーカー系の中小企業は割とQtを使ってたよ
.NET上で動くものなのに.NETが死ぬとはこれいかに?そしてスレチだ。
ここはWPFのスレなんだがもしかして何だかわからず書いちゃった?
え?マジレスしたらいけないって?
>>550 QtはGTK+よりはまともな印象があるなぁ。3Dはもともとunixな環境が強かった世界だし
あまりOSに依存した開発はしたくないとかあるんだろうね。Qtはもともとプロプラな物だし
昔はつぶしの効かないMFCとか使うぐらいならQtを選ぶのもわかる気がするわ。
しかしまぁ、この手のクロスプラットホームのものってどれも古臭い(良く言えば枯れている)
感じはあるよなぁ。あー、懐かしいとさえ思える泥臭さがある。wxWidgetとかもそんな感じ
だった記憶が。まー、新しければ良いという物ではないけど進化しない世界だなとは思う。
GTKは糞
>>553 Dart や Typescript 以上のものは感じなかった
動画プレイヤーの全画面時みたいに、画面端にカーソルが来ると操作パネルがポップアップするようなの
なかったっけ?
質問。
GridのセルなんかにImageを
<Image>
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup/>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
みたいな感じで入れてると、DrawingGroupのDrawingContextに何か書くまでは
ImageのActualHeightもActualWidthもゼロを返すんだけど(まあ当然なんだろうけど)
その前のまっさらな状態でサイズを取得するにはどうしたらいい?
ImageをGridとかに入れ子にしてそいつのサイズを代わりに取得するしかないんだろうか?
データグリッドのテンプレートカラムにスタックパネルを置いておき、
そのchildrenとしてテキストボックスのコレクションをバインドするにはどうしたら良いでしょうか?
ItemsControl
562 :
デフォルトの名無しさん:2014/02/03(月) 23:14:30.71
ツリービューのスクロールバーって、
色の変更は出来るのでしょうか?
ググる限り情報は見当たらなかったので、
ひょっとして出来ないの?と思いまして。
できる。できるが・・・非常にめんどくさい。
ScrollBarのStyle弄るとか、ControlTemplate書くとか
サクッと変更できるやん。
MainWindowにあるボタンを押すとContentControlの内容が別のUserControlに切り替わる、というプログラムで
そのUserControlの中にも同じようにボタンを配置して切り替えられるようにしたいのですが、どのようにすればいいんでしょうか
「WPFで画面遷移風のアプリケーション」でググって出てくるブログ記事を参考にしています
風の← 不要
宣伝乙!
>>565 日本の情報は糞
MSのPrismに画面遷移の良いサンプルがある
URL plz.
571 :
デフォルトの名無しさん: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のときにアンインストールすべきだったのでしょうか?
572 :
デフォルトの名無しさん:2014/02/07(金) 00:35:38.54
スレ違い
そうか。.NET4.5とスレタイに入ってるんだな。4.5に限定する理由ってあるん?
バージョンに依存した内容はほとんど無いよな。流石に3.0ベースはナイけど
>>573 ヒント:Chartクラスが属する名前空間
少なくともバージョン縛りは関係ないと思うぞ。<スレ違いの理由
そういう意味じゃねぇよ。入ってなきゃ勘違いもなかったろうという意味だ
>>570 RoutedCommandを使って試行錯誤の末、期待通りの実装ができました
Windowを継承したクラスにまとめたらだいぶスッキリしました
ありがとうございました!
Expression Blend 4 と Blend for VisualStudioは、何が違うの?
ImageとかのプロパティのProjectionが見当たらない
SilverlightでNavigationFrameworkを用いてページ遷移をする場合、
遷移先のTo.xamlのコンストラクタに引数を渡す方法はないでしょうか?
NavigationService.Navigate(Object)メソッドが使えればPageを継承した
インスタンスを直接渡せるのですが、
あいにくsilverlightでは削られてしまっているようです・・・
わかりにくくてすみませんが、よろしくお願いします。
シングルトンでグローバル変数的に持っとけばいいよ
シングルトンだとテストがしづらいからPrismはシングルトンの代わりにDI使ってた
こんな感じのヘルパーメソッドを使えばいいんじゃないの
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;
}
ugaya40のサイトっていつ無くなったんだ?
583 :
デフォルトの名無しさん:2014/02/10(月) 14:26:49.72
金払ってないだけでしょ
404になる度に思うが、ちゃんと管理しとけよと。
なんか2ヶ月に1度ぐらいのペースで見られなくなってるねw
金払ってないって今時カードか引き落としだと思うんだけど、
口座に1000円単位の金もなくなっちゃうほどカツカツの生活なのかなw
余計なお世話だけどさ
引っかかるくせに鯖落ちで検索汚染してるわんくまクラスのウザさ
あれも酷いねw
もう5年ぐらいずっとあの調子だ。
MSのwebサーバーは使えないって嫌がらせでもやってるつもりなのかね
真面目な話、風物詩とかネタにして良いもんじゃないだろ。
小銭稼いでんだから、まとめて払っとけよ。
WPFのWindowでマウスドラッグでウィンドウサイズ変える時に縦横比を固定する事って可能?
中身のコンテンツの比率を固定するのは簡単に出来るけど隙間が空いてしまうのが格好悪いなぁと。
>>589 サイズ変更された時にWidthとHeightいじるとか(チラつくけど)
綺麗にやろうとするとWin32のWM_SIZINGメッセージとか。
MeasureOverrideやArrangeOverrideでどうにかなると思ったけど、Windowだとダメっぽいな。
>>589 マウスポインタにウィンドウの隅が追従しないUIの方が絶対不恰好だと思うけど...
俺ならそんなアプリド素人が作ってるとみなすよ
ボーダーとカーソルが一致するように縦横比固定することは可能だし実際にあるんだけど…
ではお伺いしますが、そういうアプリでマウスを完全に水平方向に左に移動させる
動作をしたらどうなるの?
少なくとも次の4パターンが考えられるが、
(1) マウスポインタは動かない
(2) マウスポインタは左に動くがウィンドウの枠は動かない
(3) マウスポインタは左に動くが、ウィンドウの枠は楯横比を保って拡大
(4) ウィンドウの枠は楯横比を保って拡大。マウスポインタはウィンドウ枠の対角線にそって動く
どれも直感的とは言いがたいね。
操作方法が既知として扱われている以上、目で見れば分かる多少の動作の違いに直感的もクソもねえよ
>>590 やはりそれしかないか。ってことでWM_SIZINGハンドリングしてサクと作ってみた。
まぁ、出来たんだがWindowChromeで見た目変えてるのってリサイズ時に素のウィンドウの
描画が一瞬見えるのな・・・。今回の固定比率とはまた別の話だけど。
>>591 言いたい事は分かる。
けど、今回は背景画像が固定になっていて比率変えると間延びして恥ずかしい事になるんだ。
かといって隙間入れるともっと恥ずかしい。デザインした奴に死ねと言いたい気分だけど
色々事情があって差し替え出来ないので苦渋の選択なんだよ。
ホント他に良いアイディアあったら教えて欲しい位だわ。クールな玄人の意見教えてよ。
ウインドウが横に広ければ背景画像の上下または下を切る
ウインドウが縦に広ければ背景画像の左右または右を切る
というのはたまにやるけどこれも画像によるな
>>595 隙間が入ると恥ずかしいって感覚はよく理解できないな。
メディアプレーヤー系のアプリなんかみんなそうだし、それがかっこ悪いとも
もっといい方法があるとも思わない。
デザイン分業が叫ばれるWPF界隈でマーにデザインを聞いてどうする
デザイナーに聞け
>>597 えー?感覚違うんだな。
http://imgur.com/hDPOpOn 適当なサンプルだけどこういうのの隙間見て気持ち悪くない?
実際のは色々な要素がハードコーディングになっていてボタン群やら文字やらの
全体にエフェクトがシームレスにかかっているのでバラして調整も出来ないんだわ。
まー、WPFと全然関係ない話になったのでこの辺にしておくけど・・・。
動画プレイヤー動画プレイヤーって・・・うまく説明出来ないけど動画とか絵とかのコンテンツ表示の為の領域と
ユーザーが操作するアプリがこういう風に動くのでは全然デザインに対する意味も違うと思うんだけど・・・。
まぁ、感覚の違いがあるのは良く分かったよ。
明らかに隙間があった方がおかしいでしょ
比率固定で動くウィンドウを持つアプリケーションなんて結構あるし
デザイン的にズレるなら尚更適切な比で表示した方がいいような
UI議論スレじゃねーんだけどよその辺理解できてまちゅかゴミども
>>602 Win9xの時代にはそういうのあった(俺も印刷プレビュー画面をその方式で作ったことがあった)けど、
今はまず見ないでしょ。
さすがに今となってはセンスが悪いUIと言わざるを得ない。
まあ隙間が開くとかっこ悪いって感覚はやっぱりよく分からないけど、どうしてもってことなら、
クライアント領域のW/HがコンテンツのW/Hより小さい場合はHを、大きい場合はWを合わせて
他はスクロールバーで対応するのかね。
スクロールバーの幅を考慮に入れる必要があるからかなり面倒になると思うけど。
>>595 そういうのは設定で決めさせるのさ
ウインドウはNoResizeでok
質問しようと思ったのですが、整理してるうちに一応解決したので貼ります
−−−−−−−−−−−−−−−−−−−−−−−−−−ここから質問
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);
あとは落とし穴がないことを祈るばかり
アイテムが重複を許すならバグるってすぐ分かったけど、
解消する方法が思いつかない。
CellからItemを得ても何個目に出現するものかは分からないものね。
>>606 それ意味的に正しいのはOfTypeじゃなくてCastだろ
要素数が狂ってバグの元だぞ
なぜかWebの解説なんかではOfTypeがよく出てくる気がするが、ほとんどのケースではCastが適切
>>607 アイテムにラッパーを被せればいいよ
ItemContainerGenerator.IndexFromContainerもItemContainerが重複していないから正しくインデックスを返せているわけで
よくわからないけど、indexをどっかに埋め込むのはだめなの?
TabItemを動的に作成するのにViewModelをViewに適用って方法でやってます。
その場合TabItemってどうやって取得するんですか?
ItemsとかSelectionChanged.AddedITem見に行ってもViewModelが入っているので困っています・・・。
ちょっと上に書いてあるItemContainerGenerator.ItemFromContainer
>>612 ありがとうございます。
TabControl.ContainerFromItemのほうでViewModelからTabItemがとれました。
最終的にTabItem.Contentの中をVisualTreeHelperで検索したかったのですが
TabITem.ContentがViewModelでだめでした。
再度質問で申し訳ないですが
どうやったらVisualTreeHelperが使えるようになるんですか。
TabItemの子孫が欲しいならそのままTabItem渡せばいいだろ
>>614 あーすみません。
わかりました。
最初に呼ばれるSelectionChangedのなかだとまだUIが作られてないんですね・・・。
あるある
617 :
デフォルトの名無しさん:2014/02/18(火) 22:15:41.63
そういうのはBlendでテンプレート弄る
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>
WPFの話になるのか分からないけど、ずっとWin8で開発していて
デザインもきっちり収めて悦に入ってたんだけどWin7で動かしてみたら
テキストのレンダリングが違うみたいで字がはみ出たり散々な状況。
何かOS依存しないで同様に配置出来るうまい方法は無いもんかねぇ。
そんなあーたにWinForm
もう画像にしちゃうって手も…
code.msdn.microsoft.com/windowsdesktop/MVVM-d8261534
このページのサンプルで、対象フレームワークを4.5以上にあげると
実行した時、小数点が入力できません。
4以下にすると入力できるようになるのですが、なぜでしょうか?
>>623 例えば12の後に小数点を打つとバインドされたプロパティ(double型)の値は12.0になってる。
で表示するときに「.0」部分は無視されて(書式設定してないから?)12と表示される。
だから小数点が打てない状態になっているみたい。
(123と入力した後に12と3の間に小数点を打てば12.3になる。)
フレームワークのバージョンで挙動が違う原因は俺にはわからない。
一言で言えばバグ
単位変換みたいなValueConverter全く実装されてないけど使わせる気あるのこのフレームワーク
そんなもん自力で書けよ
んな細々したライブラリが充実するほどにはユーザーがおらん
MVVMと非同期ツールキットくらいしかまともなサードパーティライブラリないしな
629 :
デフォルトの名無しさん:2014/03/06(木) 15:12:41.36
>>628 MVVMCrossぐらいできてたらもう十分だろ( ̄(工) ̄)
何個似たようなMVVMのフレームワーク作る気なんだろうな
馬鹿じゃないの
少しはその労力他に割けよ生産性のない奴らめ
631 :
デフォルトの名無しさん:2014/03/06(木) 22:56:33.47
>>630 同じ奴が作ってるならそうだろうな(。-_-。)
632 :
デフォルトの名無しさん:2014/03/07(金) 02:18:25.97
>>589 だいぶ古い投稿だけど返信
ウインドウをCanvasで埋めて、それとbindingを連携すれば
いいんじゃない?
次のバージョンはDirectX11ベースになってくれると嬉しい
WPFの用途だとDX11ベースになっても見た目は何も変わらない
落ちにくいんだろうけどそもそも落ちない
DX11はDX9系に比べれば描画性能けっこう良いから、パフォーマンスは安定するぞ
MSが書いてるコラムを見てもボトルネックは描画よりバインディングの方ですしおすし
パフォーマンス向上しそうなシェーダー処理が絡んでるのEffectとかその辺だろ?
2Dのフィルやマッピングでパフォーマンス改善されんの?
シェーダ以前の通常描画でもそれなりにパフォーマンス違う。
といっても2倍未満くらいだが。
バインディングは、まあ…
いい加減WPFにこだわるのやめてUnityみたいなマルチプラットフォームIDEを作れよMS
何のための.NET Frameworkなんだ?
WPFがWindows以外で動けばデベロッパー増えるだろうに
>>626 それよりデフォルトのカルチャがen-USなのがウザイ
ローカルを使わせようとすると
xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib"
Text="{Binding LastWriteTime,StringFormat=d,ConverterCulture={x:Static g:CultureInfo.CurrentCulture}}"/>
いちいちBindingにカルチャ指定してるのか…
>>641 希望的観測過ぎて笑える。一体Windows以外のどのプラットホームのユーザーが使うと思うの?
大量のコントロールある画面の描画速度どうにかしてあげられないかな?
rectangleとline動的に使いまくったらとても遅い
Silverlightがまさにそれだろ
クロスプラットフォームなクライアントはSilverlightやFlexやJavaFXが全滅してHTML最強で決着した
MS自身が.NET FrameworkをオープンソースにしてVSもマルチプラットフォームにすれば
間違いなくJava潰してASP.NETで天下取れるだろうけど、結局それだとMSの利益にならないからね
Silverlightはチーム解散したよ、知ってると思うけど
切り捨て早いw
まあぶっちゃけWPF推奨するよりWinFormsをより良いものにしていったほうが
みんなが幸せになれるよね
とにかくMSは使えないGUIライブラリを作り過ぎ
MFC, ATL/WTL あたりは完全に捨てて本当に使えるものを
一つだけ作るべき
いまさらFormsでバインドもどきとか本当にありえない
そもそもバインドはいらない
>>648 まあ今は駄目でも良いものにしていくんだよ
ぶっちゃけどんなに出来が悪くてもWin32APIとWinFormsは
無しにはできないんだから、これらにリソースを集中すべき
リソース分散させた挙句にクソGUIライブラリ量産って
意味が分からなすぎるw
昔からではあるが最近MSの迷走が特に酷いからな
機能詰め込みすぎを認めてサブセットにした方がいいんでねえのとは
653 :
デフォルトの名無しさん:2014/03/08(土) 22:03:50.33
それでもXAML以外はもうあり得んわー(´・ω・`)
654 :
デフォルトの名無しさん:2014/03/09(日) 04:44:06.28
入門したいのですが
エッセンシャルWPFって本は今買っても有用でしょうか?
DataGridに文字出す時に行の高さに合わせて文字を調整したいんだけど
そういう場合ってViewBox位しか手が無いよね?
ViewBoxでやると内容を横方向のサイズへ合わせる形には出来るんだけど
縦方向に合わせて調整して文字サイズを全行で一定にみたいなのが難しい・・・。
とりあえずは入れるデータの文字数を調整すればなんとかなるけどもっと
スマートな方法あるのかなぁ・・・。
656 :
デフォルトの名無しさん:2014/03/09(日) 13:17:38.84
>>654 今はMVVMとかも盛り込んでるようなのにした方がいいと思うけど…和書であるかは知らん
書いても売れないんで
ストアができて多少普及するかと思ったけどそんなこともないね
書いても売れない以前に書ける人いないんでしょうな
実際に実務で使っている人は本を書いている暇なんぞないだろうし
MVPが書けば
偉そうなこと言ってるしエバンジェリストくらいの立場に居るでしょ
業務の一環としてやればいい
まさか土方じゃあるまい
とーちゃんは日本一の
やっとID強制になるのか
色々黒い噂というか推測はあるけど、こっちの意見が通る分新運営のほうが何十倍もマシだわ
どこぞのスレとかどうなるのかね
どこぞってかAPIスレだが
もしや、導入と同時に過去レス分も表示されたりすんの…?
このスレは過疎ってるからともかく、おもしろいことになりそうだなw
WPFでコントロールにイベントハンドラを設定した場合、ユーザーの操作だけでなく
プログラムから操作した場合もイベントハンドラが起動してしまうんだけど
(ListBoxの項目選択とか)
プログラムから操作した場合はイベントを起こさないようにすることは可能?
今はプログラムで操作する前にフラグを立てて
イベントハンドラ内でスキップ判定してるけど、スマートでない気がしてます
同じ状態変化を区別しようってのがナンセンス
>>651 そりゃあCEOがあれだから。
新しい人になったけど、どーなるかね。
>>666 なるほど一理あります
でもコントロールが入力装置と出力装置を兼ねている以上
双方向からの状態変化が来るのは避けられないんだよな…困った
>>666の言うとおりで、状態の変化を起こしたのがユーザーかコードかを
区別しなきゃならないってのは多分変な思い込み。
>>644 Windowsのデベロッパーは皆MacやLinuxでVS使って開発したいって思ってると思うぜ
そもそもXamarinのウリがC#よりVS+.NETでの開発なんだから・・・
>>670 一昔前にはPHP.netなんてものもあったな。
あれ、どうなったんだっけ?
>>670 根本的に勘違いしてないか?
MacやLinuxで開発したくないから(ネイティブ環境で開発出来る人が少ないから)
Windowsで動く開発環境(VS)で他のプラットホームでも動くアプリ作ろうってのが
今のXamarinだろうに・・・。
皆とか言ってるけど開発環境をLinuxにしたいWindowsユーザーなんか想像もつかないわw
>>665 イベントハンドラの先頭にフラグで処理制御
if(flag)
return
コードの変更前にflag=true
変更終わったらfalse
一日遅れで質問に書いてある対処法を書く人ってかっこいい
675 :
デフォルトの名無しさん:2014/03/10(月) 21:15:25.43
>>672 いまiOS向けの開発してるけど、VSからだとデバッグとか時間かかりすぎて実ように絶えない(。-_-。)
>>675 Xcodeもobj-cもろくに使えない無能なのが悪い。諦めて無駄な時間費やしてデバッグしてなさい。
677 :
デフォルトの名無しさん:2014/03/11(火) 01:25:58.94
>>676 XamarinStudio使えば解消されるんだが。
あんなめんどくさいクソ言語使って俺できる男キリッとか池沼ですかw
>>677 自分が理解出来ないから糞言語か。自分が無能ですと自己紹介して楽しいんかね。
679 :
デフォルトの名無しさん:2014/03/11(火) 06:47:29.92
>>678 お前も他のいい言語があるのを少し知った方がいいぞ。
今の時点でObjectiveCがすぐれてるとこってなんなの?記述もめんどくさいしMac/iOS以外で使われてないことが言語としての優位性を持ってないことの証明にならん?
Xcodeはドキュメントフォーマットすらロクに出来ないのにIDE名乗って恥ずかしくないの
そんなの飾りです
ドザーには分からんのですよ
>>679 つか、そういうのって適材適所だろ。言語的な良さなんか糞の役にもたたん。
結局それ用に設計されてるんだしちょっと凝ったことやろうとするとネイティブな環境の方が
痒いところに手が届くんだし。WPFに全然関係無いしいい加減スレチやで。
683 :
デフォルトの名無しさん:2014/03/11(火) 10:51:30.24
少なくともobjcはみんな避けたがってるのは事実
685 :
デフォルトの名無しさん:2014/03/11(火) 11:46:04.50
しかしiOSのAutoLayoutは慣れれば簡単に使えるようになるのか?
XAMLに慣れた身だとどうにもわからなくて、結局前作ったレイアウトシステム弄ってXAMLライクに設定できるようなの作ってしまったが不必要なもの作ったのかどうか確信が持てない。
そもそもiOSというかiPhoneやiPadは解像度がある程度固定されてるのしか存在しないというなが最大のメリット(だった)だから簡単だった
そう思ってた時期が僕にもありました(aary
IDがついに導入されたんだな
記念カキコ
あらほんとだ。
VSのXAML対応はもう少し頑張って欲しいな。現状エラー起きると特定が大変。
printfデバッグ的なことすらできないしなんとかならんものかなぁ。
正常な記述してもデザイナーがエラーはくのとかも困る。
パーツ共通化してリソースでマージしてとかすぐエラーはくしな。
まぁそういうのはコントロールにしろって考え方なのかもしれんが。
お
ID気づかなかった
いいねぇ
ロジックではなくUIの読み込みが遅いのでアニメーションで誤魔化したいんだけど
遷移前にアニメーション開始、ロードしたUserControlのLoadedのタイミングで終了
ってやると何も表示されないで終わる・・・。タイミングの取り方も問題だろうけど
UIスレッドが一本なのでロード中固まってしまうという話な気がするので・・・対策が
思いつかないわ・・・。何か良いアイディア無い?
UIの読み込みが遅いって何?
ロジック(VM?)じゃなくて、読込が遅くなるほど重量級のUserControlって一体…
客先に指定された買い入れのWinFormsのコントロール
複数あるのも原因だけど張り付けただけでも全部読むと秒単位固まるんだよね・・・
あまりに糞過ぎて捨てたいんだけどそうもいかんという。PRISMの問題でもあるんかなぁ
> UIスレッドが一本なのでロード中固まってしまうという話
既に答えが出てるじゃないか。
UIスレッドが1本なのが問題なら、2本にすればいい。
多少、泥臭くて面倒だが、誤魔化す為のアニメーションなら現実的なレベルだろう。
RibbonWindow使ったら外枠がおかしくなる現象はどうすれば治りますか?
697 :
デフォルトの名無しさん:2014/03/13(木) 19:26:16.05 ID:dycS71DR
>>695 >>697 うん、俺も出来ないと思ってたんだけど二本に出来るんか?しかも一つのウィンドウの中とかで。
>>698 当然、1つのウィンドウの中で2つのUIスレッドは使えない。
別ウィンドウなら別のUIスレッドが使えるので、
別ウィンドウを元のウィンドウのすぐ手前に配置して、1つのウィンドウのように見せる。
700 :
デフォルトの名無しさん:2014/03/14(金) 00:45:20.87 ID:bbGk2WDX
なにを言ってるんだろう…とまぁ俺の無知なんだろうなと静観してたが、
そういう意味かよ…スプラッシュウィンドウ的な単語を使えば誰でも分かったと思うんだがw
遷移前に一回裏でnewしておけば早くなるパティーンもあるけど
704 :
デフォルトの名無しさん:2014/03/15(土) 21:20:28.85 ID:s/ZKyli9
こんな結果になるんなら、
命名はお姫様細胞で良かった。
Binding.IsAsyncに2週間早く気づいていれば・・・こんなことには
DataGridのセルにComboBox(テキスト編集可能状態)を入れた状態でそのセルの
文字を編集した時に日本語だけ入力した場合編集を終了してもデータが入力された
事にならないみたいなんだけど原因分かる人います?
アルファベットだけとかアルファベット+漢字みたいに混ぜると大丈夫だし不思議な
動きな気がしているんだけど・・・。
Control.Backgroundの規定値はBrushes.TransparentとMSDNには書いてあるけど
これ間違ってるよね?
実際はnullでマウスイベントが取れなくてちょっと悩んだ。
>>707 なんかVS2012とVS2013で挙動が違った記憶があるんだけどどうだったかなぁ。
同じ.NET 4.0 Full向けのプロジェクトを開いているのに2012ではBackgroundが
設定されていないと白だかだったのが2013で開くと透明になっていた気がする。
それだとTextBlockはインスタンス一つしか作られないから
1つのTextBlockが複数の親を持つことになるからじゃないの
712 :
709:2014/03/24(月) 22:33:11.68 ID:trnp8Ujb
あーなる、言われてみればそうだわ。
すっきりしたわ、ありがとう。
>>707 透明のブラシを指定してもマウスのイベントは透過するはずだけどねw
>>713 TransparentだとMouseLeftButtonDownが取れるけど、nullだと下の要素に行っちゃう。
この辺の事ってどこに書いてあるんだろう。
ComboBoxをIsEditable=Trueにした状態で実行時に日本語のみを入力すると
IMEにGoogle日本語入力使っているとPropertyChangedが来ない事に気付いた。
アルファベットのみやMS-IMEだとちゃんと来るんだけど・・・orz
これってどんな状況でも入力された文字を受け取れる方法ってあるかな?
ATOKとかはどうなんだろうなぁ・・・。
Nyaruruとかいう人が随分前にそんな記事書いてたな。
詳細は忘れたが
UpdateSourceTriggerがPropertyChangedでソースがupdateされないって意味だろうか…
コードビハインド側でならイベ拾えてるとかあるし、もし発生してるなら
手動でUpdateSourceしちゃうとか…
719 :
デフォルトの名無しさん:2014/03/31(月) 02:15:54.07 ID:ETDm8N10
>>717 その人がGoogleIMEに絡んでてWinRTのIMEは魔界だ的なつぶやきしてた希ガス。
個人的にはあの人をIMEなんかに時間とらしてるのが勿体無い希ガス
MSは昔からIMEの仕様をいい加減にしてる
Googleはしっかり対応できないので適当に実装をしてる
研究費はかけたくないみたいだ
MSのアーキテクトがちゃんと考えてないんだと思う
IME使ってない人間が開発してる恐れもある
MS-IMEって中華製なんでしょ?
XAMLで配置したコントーロルのうち、テキストを入力可能なものを選んでC#コード側である処理を行いたい場合、どうやればいいですか?
コントロールを一個一個取得するコードはできていて、デバッグ実行すると各コントロールのインスタンスのプロパティは見えています。
>>723 「テキストを入力可能なもの」というのが、
IsReadonly=falseのものを指してるのか、IsEnabled=trueのものなのか、
文字列を設定可能なコントロールを指してるのか、意味不明なんだが
>>724 画面上に存在していて、テキストの入力を受け付けるコントロールを選びたいので
前者が意味的に近いと思います。
>>725 コントロールを取得するコードがあり、各コントロールのインスタンスのプロパティも見えてるんなら
あとはやりたいように実装すればいいだけでは?
もしかして「見えてる」とは、コードじゃなくWPFビジュアライザのこと言ってる?
ホントに質問の意味がわからない…
よもや if を知らないとかそういうレベル…?もうwpfうんぬんやないでそれだと。。
>>726 コントロールを1つずつスキャンするコードの中で、
今スキャンしているコントロールがTextBoxなら、追加の処理を行う、
ということは実現できています。
これを、TextBoxに限定せず、一般のコントロールに対して統一的に
文字が入力可能なコントロールを選別する方法があれば知りたい、というわけです。
729 :
デフォルトの名無しさん:2014/04/04(金) 16:42:21.56 ID:QbEyL1Pb
そもそも入力できるコントロールなんて幾つもないだろ
>>728 そもそもなんでそんな面倒なことせにゃならんの?
UIが動的に変化するにしても、ターゲットとなるコントロールの正体が判らんとは、おかしいにも程があるだろ
入力可能というのをどうやって判断するのか
統一的にという話ならUIElementにTextInputイベントがあるくらいだから
WPFのコントロールでテキスト入力不可能なものなんてないんじゃないの
>>730 タブレットデバイス向けに、オンスクリーンキーボードを自動的に出したり引っ込めたりする必要があります。
WindowsStoreアプリなら、入力可能な部分にフォーカスが当たると自動的にオンスクリーンキーボードが出ますが
ある制約があって、WindowsStoreアプリではなく、デスクトップアプリとして実装する必要があります。
>>731 まさにそれが知りたいです。
>>729 これまでのご意見を総合すると、コントロールを明示的に指定する方法がシンプルでよさそうです。
入力可能な個所は必ずTextBoxまたはTextBoxBaseであると限定できるなら、
VisualTreeHelper あたりでどうにかできそうではあるけど…
ComboBoxのIsEditable=TrueはデフォTextBoxみたいだ
まぁ、限定できない数じゃないしコントロールの型で判定した方がいいな
WPFのイベント・バブリングについて質問があります。
あるWindowの中に配置されているコントロールで、例えば、ボタンをクリックしたmousedownイベントは、
バブルアップして最終的にはそのWindowのmousedownイベントをも発火させると思っています。
しかし、ボタンをクリックしてもWindowのmousedownイベントのハンドラは発火しません。
どうしででしょうか?
>>737 ボタンのmousedouwnイベントを、最終的な親のwindowのmousedownイベントにまで届けるには具体的にどうすればいいのですか?
各コントロールのHandledプロパティはデフォルトでfalseのようなので、勝手に親に伝搬していくと思ってるのですがwindowにまで届きません。
あれ?もしかしてPanelのHandledはデフォルトでtrue?
PanelにHandledプロパティなんかなかった・・・orz
Buttonの場合は左クリックのMouseDownはたぶんOnMouseDownの時点で握りつぶすようだけど、
よく意図が分からん仕様だな。
MSDNには「一部のコトロールはそういう処理をする」とだけ書いてある。
>>738 どうすればっていうのは737に書いてると思うのだけど
>>742 ウィンドウのコンストラクタの中で
MainWindow1.AddHandler(MouseDownEvent, new RoutedEventHandler(mouseDownHandler), true);
ってやったら自作のmouseDownHanderが呼ばれました!さんくすこ!
WPF本格的に勉強したいんだが、いい本ない? 洋書でもいい
業務では1年ちょい使ってるが、職場に有識者いない感じ
ProWpf4.5とか評判良さそうだから興味あるが、誰か読んだ人いないか
>>744 本格的を実用的と取ると適切な本はないと思った方がいい
しっかり使うには基本のフレームワーク以外も使う必要があるけどそれについての本なんてない
海外のサイトなどを地道に見ていくしかないけど一人じゃ厳しい
何とかして実力者を見つけるか勉強会に出るぐらいかな
洋書もサイトのヘルプに毛が生えた程度のものが多い感じだね。
結局はこの手の本って現場でモリモリ書いているような人が書いてないから
当たり障りの無いことしか書かれてないし実用性求めたらろくな本がないもんだけど
WPF関連は輪をかけて大した本が無い状況。
英語で良いならstackoverflow眺めながらモリモリ書くのがベストだね。
フレームワークとかもナマモノだしな。
748 :
744:2014/04/08(火) 08:53:16.39 ID:XRLU8ip5
>>745-747 マジかー ありがとう
とりあえず洋書読んで、フレームワークもOSS多いし中身読んでって感じでいってみるわ
>>744 WPF Unleashedもおすすめだよ。
proよりもこっちの方が読みやすい英語だった。
あとはcodeplexとかで、いろんなコード見てみるのがいいんじゃないかな。
あああああwpf難しい
向いてないね俺
WPFは時間の投資に対してリターンの少ない環境だとは思う
しかしディスプレイの高解像度化でDPI依存が辛いからWPFに移る予定
バインドの設定済みのxamlから、物凄くアバウトなVM雛形を吐いてくれるツールってないかな
まぁ、自力で書いてもそんな時間かからんが、既にあるならソレ使おう的なw
753 :
デフォルトの名無しさん:2014/04/15(火) 11:56:27.24 ID:7sxQZ0IC
>>749 Adam Nathanのやつだよね?
ストアアプリやる必要性からWPF含めてXAML本幾つか読んだんだけどこの人の本が一番いい具合に突っ込むところは突っ込みつつかつ全体を網羅してまとまってた希ガス。
MSの新CEO・・・?と一瞬思ったが、全然違った
CEOの名前が全然覚えられない
なんとかナデラだろ
日本人っぽい姓で覚えやすいw
>>753 そうそう。ProWPFもざっと読んだけど、Unleashedの方が分かりやすかった。
WPFを始めたばかりの人でも、この本はHowTo的なサンプルコードが一杯あって読みやすいんじゃないかな。
あと、こういう所でよくミスする、ってポイントの説明もあっていい感じ。
こんな本の和訳でも出れば、WPFももっと普及するだろうに、、、と本当思う。
MSは普及させる気があるのか
OfficeアドインもHTML5+jsとなるとシルバーライトの二の舞か
むしろこんな筋が悪い技術普及してもらっては困る
759 :
デフォルトの名無しさん:2014/04/17(木) 01:31:22.88 ID:xO4Uc49B
>>758 だからと言ってHTML5は勘弁して欲しいわ
javascriptとかいうゴミ
カッチリ冗長未完成を取るか、いい加減変態未完成を取るかか・・・
ひでぇ選択肢だ・・・
WPFのグラフィック本当に糞遅いな。
StremGemoetry使ってたった数千程度の頂点のPolylineを書いてるだけなのに
何で秒単位の時間が掛かるんだ?
GDI+ですらこんなの一瞬で終わるのに。
こんな性能じゃ何年たっても一向に普及しないのはむしろ当然だわ。
ベクターベースのUIを持ってる以上のものは期待しない方がいいな
ビットマップのImageSourceとかストレッチしないつってんのにアンチエイリアスかけるし
原寸表示してんのにニアなんちゃらとかいう特殊なオプションが必要って
ChromeやFirefoxみたいなタブ管理機能を備えたアプリケーションを作りたいのですがどうすればいいのでしょうか
みたいなタブ管理ってどっからどこまでのことなのかまるでわからん
D&Dでタブを動かすことができる
タブをウィンドウに分離できる
タブの固定などができる
タブの下にUrlなどの情報が表示される
などです
ChromiumやFirefoxのソースコードで作ろうと思ってビルドで挫折したので馴れている.NETで作ろうと思ったわけであります
どうすればいいってそのへんの個別の要件を満たす作り方全部教えろってかw
せめてTabControlなり張り付けて問題にぶつかったらにしろと…
とりあえず一番上はネット上を参考に、一番下はタブ生成時にTabItemに挿入することで実装できました
タブの固定は優先度が低いのでそのうち実装する予定です
ただSimpleTabItemなどを参考にしましたが丸みを帯びたデザインにするのができません
3,4番目を人に聞いてる奴に1,2番目の独自実装は無理
770 :
デフォルトの名無しさん:2014/04/19(土) 21:46:26.00 ID:pzsg7m6u
>>768 そういうのは自分でキャンバスとかにゴリゴリ乗っけたり描いたりしたほうがいいんじゃないのか…
SimpleTabItemですが正確には、Xamlで書いてもうまくいかずに、ソースコード中でCornerRadiusを変更したBorderを入れましたが四画の中に四角が入りました
作れば?としか言いようがないなw
774 :
771:2014/04/19(土) 22:53:38.77 ID:UQPJSFXx
>>774 そういう意味ではなくて、動的にタブを追加しているためかわかりませんが、SimpleTabItemのデザインが適用されない or 適用方法がわからないです
776 :
771:2014/04/19(土) 23:13:33.39 ID: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")
};
777 :
771:2014/04/19(土) 23:17:42.98 ID:UQPJSFXx
書き忘れ。
>>775 多分、動的に追加しているのが原因。
Blend から SimpleTabItem を追加すれば Style="{DynamicResource SimpleTabItem}" って自動で書いてくれるけど、
動的にやるなら
>>776 みたいに自分で設定してやらないとダメ。
778 :
775:2014/04/20(日) 18:34:39.90 ID:noaEY9Ib
有難うございます
できました
NavigationWindowのTemplateをいじりたいのですが
ネットにあるサンプルを張り付けてもスタイルが反映されません。
何か原因はわかりませんか。
NavigationWindow.Templateに直接ControlTemplateを渡すと
とりあえず読み込むページが反映されるようです。
>>779 その説明では、さっぱり分からない。もっと具体的に。
Template をどういじりたいの?ネットにあるサンプルってどれ?とりあえず読み込むページって?
<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>
>>783 できたよありがとう
Styleの外出しも参考になりました
ユーザーコントロールを作って、それをウィンドウの中で使おうとすると
Visual Studioのデザイナで
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
とかいうエラーを出してプレビュー画面にエラーのスタックトレースが列挙されるのはどうにかなりませんか?
ちなみに実行しても何の問題も生じません。エラーで騒いでるのはVisutal Studioのデザイナ画面だけ。
>>785 コメントアウトを使って、どれが原因か確かめてみたら?
App.configに書いた設定読む処理が入ってたりとかするとアレになる
789 :
785:2014/04/25(金) 10:59:30.59 ID:u5lUGuWK
親ウィンドウの位置を補正するコードをコメントアウトしてみたらデザイナのエラーは消えました。
コントロールでそんなことするなと言われればそれまでなんですが、どうしてもその処理は必要なので、
tryの中で呼んで例外を握りつぶして解決してやったぜ。ワイルトだろぉ?
はい、そういうスレじゃないんでね…
くせーなこいつ
そこまで条件というか原因がわかっていてなぜ握りつぶすのか
デザインモードかどうか判定しろよ
794 :
785:2014/04/26(土) 21:42:24.05 ID:cOmCdjvc
DesignerProperties.GetIsInDesignMode(this)
なるほどね
795 :
デフォルトの名無しさん:2014/05/02(金) 17:36:10.65 ID:4xxKAu7L
DrawingContext.DrawLineでドット単位のグラフを書いてるんだけど、RenderTargetBitmap.Renderすると、アンチエイリアスがかかっているのかぼやけた感じになったり重ね描きしたところがアルファブレンドしたような感じになってしまいます
ビットマップにスケーリングされないように描画するにはどうしたらよいのでしょうか?
>>795 RenderOptions.SetBitmapScalingMode で
BitmapScalingMode.NearestNeighbor を指定すれば良いんじゃないかなぁ。
WPF意外と使えるじゃん
今までゴミだと思ってて悪かったな
>>797 いつの間にいい女になってたんだって感じだな
こんなんだったらもっと早く付き合っておけば良かったと後悔
外面だけの女だと思ったら、内面も柔軟でハイスペックな子だったという。
Formちゃんと同じ付き合い方だと合わなかっただけで。
>>796 ありがと、でもだめだった
コードからの指定だと利かないみたい
結局グラフのなかはwritablebitmapでやることにしました
音声ファイルのリソース化がイマイチわからない
画像ファイルは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));
MediaPlayerやMediaElementは物理ファイルじゃないと扱えないし
確かpackスキーム自体扱えないはず
.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>
805 :
804:2014/05/23(金) 23:23:42.80 ID:vmjDfDxI
ちなみにOSはWindows8.1です。
またRibbonWindowではなく普通のWindowにすると黒い縁は消えます。
ただしクイックアクセスツールバーはタイトルバーから独立します。
謎。もっと最小のXAMLで、RibbonWindowタグのみでも出るから…
OS毎の基幹テーマと相性悪いんじゃね
Win8だと4.5の標準リボンあるし、まああれも出来悪いままだが
WPFは死にました
マイクソソフトの次回作に御期待ください
809 :
デフォルトの名無しさん:2014/05/27(火) 15:01:17.53 ID:MyBEMO4q
今だWPFは人類最強のUIフレームワークなんだが(´・_・`)
今だWPFは人類最強のメモリリークフレームワークなんだが(´・_・`)
まあストアアプリウィンドウ表示がどんなもんかだな
あんなの期待する方がどうかしてる。
ないよりマシ以上の意味があるわけない。
いや、ぶっちゃけ今でも新規案件・リプレース共にWinFormsなんだよな
Form/WPFの熟練者って9:1くらいの割合なんだよな、チーム仕事する以上これじゃ採用できないよ
プロジェクト毎にチーム組織して終わったら解散、ずっとメンテもできないし
WPFを習熟するまで遊んでられるほど余裕あればいいけどまぁないよね
あえてWPFに熟練してないメンバーがあえてそこの実装にリソース割く意味ないんだよね
なによりWPFはFormと比較してパフォーマンスが悪すぎる
そんなの10年は聞いてるから
もう少し別の話はないのかボケ老人よ
ストアアプリは酷いのばっかりだよ・・
それでもWPFより先あるだろ
VisualStudioのフレームワークを公開してくれたらなぁ。
それでMFCのテンプレートみたいに手軽にそれなりのアプリを組み立てられるようにしてくれたらいいのに。
ストアアプリもXAMLで行けるんでそ?
820 :
デフォルトの名無しさん:2014/05/28(水) 20:28:12.31 ID:pdzwiaYa
>>819 いけますよと。
けどいろいろ削られててWPFで使えるテクニックが使えないこともままあるけど。
今後はストアアプリがメインだからな。
ストアアプリもまだ別物になるだろうけど
XAMLをどれだけ引っ張るのかが気になるわ
Surfaceは気合い入れたなって感じなのにWPFのやる気のなさはなんだ!
>>823 これからはユニバーサルアプリなんで。
大して変わらんよ。
XAMLは捨てる気なさそうで大勝利
XAMLのせいで糞アプリになる
MSが魔改造したからな
窓化出来ればUniversalAppでいいかな
830 :
デフォルトの名無しさん:2014/05/30(金) 14:48:38.62 ID:6FbkfSIP
>>827 いーからXAMLよりイイフレームワークよろ
デスクトップやサーバー開発でフロントエンドにWPF使うメリットがないんだよな
すでにWPFに熟達していて学習コストないならいいけどそんな奴Win開発の何パーセントだよ・・・
OS X(Cocoa)とiOS(Cocoa Touch)のようにセグメントがまったく違うならわかるよ?
なぜデスクトップでWPF(XAML)なのか、しかもパフォーマンスが悪い、コントロールも足りない、バグも放置
デスクトップ・サーバーでWPF流行る理由が何一つないね、JavaもJavaFX2(FXML)始まる前から終わってるしね
なぜXMLなのかわからない、そもそも俺はウェブ含めてDOM(JS)が大嫌いなんだが
832 :
デフォルトの名無しさん:2014/05/31(土) 02:10:11.10 ID:tLy9tu9w
>>831 泥でも林檎でもXML使ってんじゃん(´・_・`)
馬鹿はスルー
でも、コントロールが足りない。表示品質が低いのは事実でしょ。スマホ以下の表示品質ってどうなのよ。
XAMLデザイナーがポトペタだけで完結してくれるようにもっと頑張ってくれれば
馬鹿でも使いこなせたのに
XAMLは静的だろうけど、デザイナーまで静的でどうするみたいな
nuget見ててもトレンドはASP+jQuery
WPFなんて存在感ないっすよ
酸素より薄い
WPFのタグついてるライブラリ370個しかないのに
JQueryはJQueryだけで460個もある
WPF単体で見るとそう悪くは見えないんだけど、
ブラウザのレンダリングエンジンの品質と比べると悲しくなるな
MSのやる気のなさがはっきりと表れてる
本当にやるきが無いのが原因だろうか?
「技術力が無い」の間違いではないだろうか?
それではまるで今まで技術力でのし上がってきたみたいじゃないか
とっつき悪いからだろ
間口がせまいと馬鹿が入ってこなくていいとか強がるアホがいるが
人口こそがパワーの本質やねん
841 :
デフォルトの名無しさん:2014/05/31(土) 12:04:32.03 ID:tLy9tu9w
まぁストアアプリの方にWPFも寄せてくるんだろうね
いちいちポップアップで最前面に出て来て自己主張するアプリが多すぎるのがWindowsの糞なところ
他の作業しててEnter押した瞬間に関係ないダイアログのOKボタン押されたりして頭真っ白になる
とっつきが悪いのもあるけど、
パフォーマンス
柔軟性が高いと喧伝されてるが実際は柔軟性はWindows Formよりずっと低い
この2つが大きい。
DataTemplateとContentPresenterの組み合わせが楽しい
WPFがFormsより柔軟性低いとかないわ
MDIの話でもしてるのか
>>842 Vista以降だとノロノロとアニメーションしてくれるから防げる
>>845 すまん今はもうWPF触ってないからうろ覚えだけど、
後発だからフレームワークの枠内でのデザインの柔軟性は当然高くなってるけど、
Windows FormだったらいざとなったらWin32API呼んだりウィンドウメッセージを
直接処理すれば出来たようなことがどうやっても出来なかったりやたら難易度が高かったりして
WPFは使いものにならないと思ったことが何度かあった。
849 :
デフォルトの名無しさん:2014/05/31(土) 15:10:52.43 ID:tLy9tu9w
それこそ今までのやり方が出来ねーだろプギャーって言ってるだけじゃん。
何がしたいのかわからんけどWPFの作法でやれば解決策あったんじゃない?
そのプラットフォームに沿ったやり方しないと無理なのもあるだろうしね。
iPhone向けでウィンドウ重ねてくれと言ってるようなもんでは。
WPF使ってる時点で「今までのやり方」じゃないと思うんだけどね。
当時は散々調べつくした上の結論だから、こっちの知識や能力不足じゃなく
WPFの本質的問題だと思う。
Messengerパターンなしの時代の人かな
>>849 問題は、出来る方法があるとかないとかじゃなくて、WPFの作法に優位性があるかどうかでしょ。
柔軟性の話じゃなかったのか
結局WPFが優位になる領域ではWPFを採用するだけの話だと思うけど
そこって一体…
ダークマターでござい
>>857 理論的にはあるはずだが誰も見つけられていない
って使い物にならないってことじゃないのw
859 :
デフォルトの名無しさん:2014/05/31(土) 20:34:43.08 ID:2Ooe6qmU
>>853 前フォームで作ってて最近はストアアプリメインだけどレイアウトシステムも画面の重ね合わせやコレクションに対する表示方法にしてもMVVMに基づくコードの分離もフォームよりイイと思うけどなぁ
iPhone開発も最近してるが、IBもストーリーボードもびみょいのでXAMLライクにレイアウト出来る仕組み作って、それとMVVMCross合わせて開発して便利に思ってる。
FlowDocumentが糞すぎるのがいかん
WPFがーって言うかXAMLが・・・いや違うな・・・VSが問題なんだわ
XAML・ASP・Razorのコーディングって補完効かなさすぎてXcode使ってる錯覚に陥るw
データバインディングは自分で両側作れば補完なんてなくても打てると思うがなあ
間違ってれば実行時にトレースでるし
あとASP.NET MVCは型付きで作ればIntelliSense効く
863 :
デフォルトの名無しさん:2014/06/01(日) 12:01:48.17 ID:AGrJAw/q
ストアアプリでしか触ってないが補完十分じゃね?
Drag and DropでDrop先のエクスプローラ/デスクトップのパスを取得するにはどうしたらよいのでしょうか
少なくともAPIはWPFとFormsで異なっています。
どちらでも出来るかは結果がはっきりしていなければわかりません。
結論から言うと、WPFやFormsのAPIでは無理
どちらでもドロップ先に関する情報は取得できない
>>867 それは残念です。WAはいくつか見かけたのでそちらを試します。
ありがとうございました
Visual Studio 2013でWPFのTextBoxを継承した独自クラスを利用できません
自分の作り方がわるいのかとも思って調べて↓のサイトのプロジェクトを開いてみたところ
http://pro.art55.jp/?eid=919835 名前 "InfoTextBox" は名前空間 "clr-namespace:Art55.WpfControlLibrary;assembly=Art55.WpfControlLibrary" に存在しません。
というエラーが出たので互換性の問題なのでしょうか?
WebBrowserコントロールをページ閲覧とかのためじゃなくて、
非表示のまま裏でログインしてデータ拾うために使ったりしたいんですけど、
コントロールってただnewしただけだと動かないです?
Loadedがいつまでたっても走らないんですけども…
こういうものはXAMLなり何かしらでウィンドウ上に配置しない限り動かないんですかね…?
>>869 ソース見てないけど一度ビルドしてみた?
>>870 WPFでは基本的に表示されてないものは実体は作られない。
大抵はApplyTemplate()すると非表示で実体が出来るがWebBrowserでやったことはないなあ。
WebClient か WebRequest じゃアカンの…?
>>872 ApplyTemplate()やってみたんですけど、やり方が悪いのかちょと上手くいかなかったです。でもありがとうございます。
おとなしく実体を作ってからVisibilityをHiddenにするのが早いですかね…
なんかこう、終始見えないものをレイアウト上に配置するのがちょっと抵抗あって。
>>873 HttpWebRequestで実装できればそれに越したことはないんですが、何故かセッションが上手く維持できなくて…
ログイン後にCookieContainerを使いまわすってのは知っては居るんですが、どうにもうまくいかないので、
もういっそ見えないブラウザを作って直接遷移させようという魂胆です。なので既に元々が妥協案ではあります…。
>>871 ビルドしてみたら動きました
WPFの自作クラスはビルドしないと動かないのか
デザイナで未ビルドのクラスが認識されないのはFormsも一緒
質問なんですがマウスカーソルが重なると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>
詳しい方何卒よろしくお願いします
すいません自己解決しました
Freezableオブジェクトというものらしく、
>>879のXAMLの場合
うまくキーフレームに値をバインドできないようです(詳しいことはわかりませんでした)
代わりにイベントトリガでストーリーボードを開始するようにし
期待したアニメーションを作ることができました
お騒がせしました
質問です。
2chのスレッドのような大きな(装飾を含む)ドキュメントをRichTextBoxに読ませると、描画にかなり時間が掛かってしまいます。
今は苦肉の策として、1レス毎にVirtualizingStackPanelを使ったListView内にRichTextBoxを配置して、表示されたレスのみ描画してるのですが、今度はスクロールが不自然になってしまいました。
大きなドキュメントを読み込む場合にはWebBrowserを使うべきなのでしょうか?
それともWinFormのRichTextBoxを叩くべきなのでしょうか?
こういった場合の対処法について皆さんのご意見を伺いたいです。よろしくお願いします。
レスごとに仮想化
タブレットで動作させるためのアプリ(Windowsストアアプリではなくデスクトップアプリ)を作っています。
scrollviewerの中にgridを配置して、そのgridの中にbuttonやtextboxなどを配置しています。
scrollviewerの中のbuttonがまれに反応しないという現象が起きており、どうやら、buttonを押した後に
タッチ位置がズレて、スクロールのイベントが起きてしまい、buttonのclickイベントが無視されてしまっているようです。
buttonが押されたら、scrollviewerのスクロールイベントを無効化するような方法があれば問題を解決できそうですが
調べてもそういう方法があるのかないのかもわかりませんでした。
こういう場合はどう対処するのが良い方法でしょうか?
ボタンのPreviewMouseDownあたりで捕まえられないか?
タッチだからMouseじゃなくてTouchの方だな
Previewの方じゃなくてもButtonのTouchDownでHandledしてしまえば親には行かないと思うけど
>>884 おおなるほど。
MouseDownが起こる前にscrollviewerのscrollイベントを無効化するという戦略ですね。
明日、試してみます。
ヒントありがとうございます。
scrollイベントを再び有効化するタイミングをどうするかが難しそうですが
ボタン無反応の問題を解決する糸口がつかめたような気がします。
>>885 いま、TouchDownはなにもいじってません。
Clickイベントしか注目してませんでした。
TouchDownを捕まえてHandledをtrueにするというのも試してみます。
これもいけそうな気がします。
888 :
883:2014/06/26(木) 13:25:11.27 ID:SANvaThA
Clickイベントではなく、TouchDownイベントを捕まえるようにしたところ、
スクロールイベントが起こる前に処理を行うことができるようになり、
ボタン無反応問題が解消しました!
ただ、VisualStudioのデバッグ実行で、マウスクリックによるボダン操作が行えなくなったので
Clickイベントも一応捕まえておくべきかもしれません。
ありがとうございました!
プログラミングWindows 第6版はXAML入門として役に立ちますか?
WPFの足掛かりにと思っているのですが
なるわけないと思うけど、まあ買えば分るさ
世界は君のレビューを待ってるんじゃないか