WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part7
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/08/22(日) 21:11:53Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。
Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/
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 Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/
過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/
コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0225デフォルトの名無しさん
2010/10/28(木) 20:00:12Formはイマサラ感あるし、QtとかWTLとか?
0226デフォルトの名無しさん
2010/10/28(木) 20:31:410227デフォルトの名無しさん
2010/10/28(木) 21:16:360228デフォルトの名無しさん
2010/10/28(木) 21:43:54△△は△△で〜みたいなのって誰得
0229デフォルトの名無しさん
2010/10/28(木) 22:00:11バインディングとかゴテゴテの仕組みや描画のせいだから何で書いても一緒
SilverlightのGUIはほとんどネイティブだけどそんなに速くないっしょ
0230デフォルトの名無しさん
2010/10/28(木) 22:10:53AtomのPCで動かしてもそこそこいけるしね。
0231デフォルトの名無しさん
2010/10/28(木) 22:21:56複雑になってくるとWPFとは比べ物にならないくらい重いよ
Silverlightはシンプルな使い方しかしないことが前提だから軽い
0232デフォルトの名無しさん
2010/10/28(木) 23:30:28WinForms+J2EE(WebOTX)が事実上トレンド。
0233デフォルトの名無しさん
2010/10/28(木) 23:53:33いや、それは無いだろう…
0234デフォルトの名無しさん
2010/10/29(金) 00:17:400235デフォルトの名無しさん
2010/10/29(金) 01:43:16WPF は CPU じゃなくて GPU 依存だしね。
あと、Vista か 7 なら軽い。
>>231
Silverlight は GPU の活用度合が低い感じが。
クロスプラットフォームだからある程度仕方がなく。
>>232
いつもの、「MS 製品は3世代目から」ジンクスに従えば、ようやく正式版。
0236デフォルトの名無しさん
2010/10/29(金) 01:55:24社会じゃ仕方なくWin縛りの案件ばかりなんだよ、僕。
0237デフォルトの名無しさん
2010/10/29(金) 18:50:10これのGUIって自作なのかな
0238デフォルトの名無しさん
2010/10/29(金) 18:54:45早くなったのは起動だけ
他は、、まぁわかるよな
0239sage
2010/10/29(金) 19:00:59さらに2014年まで使えるから、
あと2,3年はビジネス用途に絡むソフトにはWPFは鬼門かもしれんね
0240デフォルトの名無しさん
2010/10/29(金) 19:11:550241デフォルトの名無しさん
2010/10/29(金) 20:26:37ほかのFWでもあまり見たことないがw
0242デフォルトの名無しさん
2010/10/30(土) 07:23:20まあそれはなさそうだからwpf使うけど
0243デフォルトの名無しさん
2010/10/30(土) 10:09:16スゲー!と思わせてもどうせ2分で慣れる。
重要なのはWhat the fuckの少ない、驚き最小化の原則に乗った動作。
すなわちUIの良し悪しはフレームワークに依らない。
WPFを使うと微妙な挙動が多くてその実現に無駄に手間がかかるがなw
0244デフォルトの名無しさん
2010/10/30(土) 10:16:58いや別にcocoaはいーやw
>243
いやLonghornのデモの時とかなんか色々すごいUIデモしてたような気がしたんだが…
まぁそれが使いやすいかどうかは別物だけど.
0245デフォルトの名無しさん
2010/10/30(土) 10:26:36ほとんどXAMLだけでアニメーションゴリゴリで動くものを作ることもできるさ。
限度を越えるとウザいだけだがなw
0246デフォルトの名無しさん
2010/10/30(土) 11:56:120247デフォルトの名無しさん
2010/10/31(日) 18:53:520248デフォルトの名無しさん
2010/10/31(日) 18:59:51WPFのWebBrowserと呼ぶほどのものでもない
0249デフォルトの名無しさん
2010/10/31(日) 22:17:37WebBrowserだけでなくどれもがウンコだろが
0250デフォルトの名無しさん
2010/10/31(日) 22:48:370251デフォルトの名無しさん
2010/10/31(日) 22:56:360252デフォルトの名無しさん
2010/10/31(日) 23:23:450253デフォルトの名無しさん
2010/11/01(月) 03:36:430254デフォルトの名無しさん
2010/11/01(月) 09:01:540255デフォルトの名無しさん
2010/11/01(月) 09:29:040256デフォルトの名無しさん
2010/11/01(月) 12:58:36ttp://hato.2ch.net/test/read.cgi/news/1288568171/
0257デフォルトの名無しさん
2010/11/01(月) 13:07:160258デフォルトの名無しさん
2010/11/01(月) 13:33:460259デフォルトの名無しさん
2010/11/01(月) 15:25:38Visual Studio 2010 みたいなものです。
0260デフォルトの名無しさん
2010/11/01(月) 16:47:180261デフォルトの名無しさん
2010/11/01(月) 17:16:420262デフォルトの名無しさん
2010/11/01(月) 21:59:540263デフォルトの名無しさん
2010/11/01(月) 22:03:56http://www.publickey1.jp/blog/10/html5silverlightwindows_phone_7.html
0264デフォルトの名無しさん
2010/11/01(月) 22:06:32そして私はWPFを考えるのをやめた。
0265デフォルトの名無しさん
2010/11/01(月) 22:08:340266デフォルトの名無しさん
2010/11/01(月) 22:27:170267デフォルトの名無しさん
2010/11/01(月) 22:30:450268デフォルトの名無しさん
2010/11/01(月) 23:00:06それ4じゃなくて4 Client Profileとかじゃね?
0269デフォルトの名無しさん
2010/11/01(月) 23:28:020270デフォルトの名無しさん
2010/11/01(月) 23:47:490271デフォルトの名無しさん
2010/11/02(火) 00:11:57WinForms安定だな
サクサク起動するようになったし侮れないな
0272デフォルトの名無しさん
2010/11/02(火) 08:40:090273デフォルトの名無しさん
2010/11/02(火) 15:45:51どんだけ変な書き方してるんだよ
0274デフォルトの名無しさん
2010/11/02(火) 15:58:450275デフォルトの名無しさん
2010/11/02(火) 20:18:17<Style TargetType="Button" x:Key="abc">〜</Style>
// App全体に適用でおっけー、と App.xaml で
<Application.Resource>
<ResourceDictionary Source="ResourceDictionary.xaml" />
</Application.Resource>
// しかし、UserControl.xaml 等からは見えてないわけで
<Button Style="{StaticResource abc}">〜</Button>
これが 「リソース "abc" を解決できません」 警告。
更に、このUserControlを使っているWindow.xamlでは
「"〜"のインスタンスを作成できません」エラー。
(デザイナを開かなければ起動できるし意図通り反映もされてる…)
今は各xaml全部に <ResourceDictionary Source="ResourceDictionary.xaml" /> と書いてますが
「App全体に適用でおっけー」を上手くやる方法はありますか。
0276デフォルトの名無しさん
2010/11/02(火) 21:10:110277デフォルトの名無しさん
2010/11/02(火) 21:36:53同じことをしてみたけど、うちでは警告でなかったし、デザイナにも反映されたよ。
.NET Framework 4 Client Profile
Visual Studio 2010 Version 10.0.30319.1 RTMRel
+ Hotfix for Microsoft Visual Studio 2010 Professional - 日本語 (KB982218)
0278デフォルトの名無しさん
2010/11/02(火) 21:54:05VS2010Expressです。
ちょっと新しく作って最初から試してみます。
0279デフォルトの名無しさん
2010/11/02(火) 22:14:57Srcフォルダを作って、そこにxamlとcsを全部入れてたんだけど、それだとダメみたい。
普通にプロジェクトフォルダ内なら大丈夫でした。
詳しいことはわかりませんが、参照の基準の場所?みたいのがあるんでしょうか。
試していただいてありがとうございました。
0280デフォルトの名無しさん
2010/11/02(火) 22:20:450281デフォルトの名無しさん
2010/11/02(火) 22:30:40右クリック 追加 新しいフォルダー、ドラッグでどぼどぼ移動、
ってやったので、プロジェクトは大丈夫だとおもいまっす。
(プロジェクトから除外してみたら例外ですた)
0282デフォルトの名無しさん
2010/11/02(火) 23:18:51なんで今までと同じにしないのか理解できない。
IME使わない国には分からないのかな。
0283デフォルトの名無しさん
2010/11/03(水) 00:09:460284デフォルトの名無しさん
2010/11/03(水) 00:12:39夢見すぎだ
現実に戻ってこい
0285デフォルトの名無しさん
2010/11/03(水) 00:45:22それを知っていれば、君はおかしな事を言っていた事に気づくはず。
0286デフォルトの名無しさん
2010/11/03(水) 01:01:33ユーザーの実態に合わせないからWPFはこうなった。
どうやら未来もなさそうだ。
0287デフォルトの名無しさん
2010/11/03(水) 01:13:210288デフォルトの名無しさん
2010/11/03(水) 01:54:24自分こそが三流だと思えないとこが三流の三流たる所以
0289デフォルトの名無しさん
2010/11/03(水) 02:12:26Ctrl+A で「すべて選択」は出来るから、キーバインドはされている。
なんか理由があるのかな?
0290デフォルトの名無しさん
2010/11/03(水) 02:22:58一流の仕事なんだから間違いない。
三流は黙っとけ。
0291デフォルトの名無しさん
2010/11/03(水) 02:31:02自分でどうにかしたらいいじゃないか。
技術的に無理か?
0292デフォルトの名無しさん
2010/11/03(水) 02:37:430293デフォルトの名無しさん
2010/11/03(水) 02:40:110294デフォルトの名無しさん
2010/11/03(水) 02:55:58TextBoxのスタイルのContextMenuに満足のいくContextMenuを設定しておけよ。
もともとTextBoxのメニューなんてあんまり統一されてなかったと思うよ。
0295デフォルトの名無しさん
2010/11/03(水) 08:31:050296デフォルトの名無しさん
2010/11/03(水) 09:13:310297デフォルトの名無しさん
2010/11/03(水) 13:00:290298デフォルトの名無しさん
2010/11/03(水) 19:05:34あった >>23-28
0299デフォルトの名無しさん
2010/11/04(木) 21:37:50非同期で表示するにはどうしたらよいのか、お教えください。
private void button1_Click(object sender, RoutedEventArgs e)
{
Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(ShowSub));
}
private void ShowSub()
{
SubWindow sub = new SubWindow();
Thread.Sleep(3000);
sub.Show();
}
こんなコードで実行すると、実行完了まで、MainWindowの操作ができなくなってしまっています。
Dispatcherの使い方が間違っているんだろう…というくらいまでは分かるのですが
それ以上わからず手じまいになってしまっています。
0300デフォルトの名無しさん
2010/11/04(木) 21:48:50SubWindowのロード処理が重いなら、とりあえず表示だけ済ませて
重いロード処理は非同期にするべき
0301デフォルトの名無しさん
2010/11/04(木) 21:50:08DispatcherにInvokeを送る=UIスレッドで実行する=時間のかかる処理はフリーズしてしまう
のです。
DispatcherPriorityを設定したからって違うスレッドで実行されるわけではないです。
フリーズしないようにするためには別のスレッドで実行するといい。
例えばThreadPool.QueueUserWorkItemとか。
でも、別のスレッドからだとUIスレッドのコントロールに触ると例外が出てしまう。
そこで使うのがDispatcher.BeginInvokeで、UIスレッドにメソッドを送りつけるわけです。
0302デフォルトの名無しさん
2010/11/04(木) 21:52:12WPFは簡単に出来たはず。
0303デフォルトの名無しさん
2010/11/04(木) 22:07:53即答ありがとうございました。
ThreadPool.QueueUserWorkItemでは STAスレッドではないということで
InvalidOperationExceptionが発生するということは
ググったり、自身で実行してみて理解していました。
自身に配置したコントロール(たとえばListBoxやTextBox)に対して
Dispatcher.BeginInvokeで非同期実行することはできていたので
Windowではなぜできないのか、悩んでおりました。
無理、という事が判明したのなら
アドバイス通り、スプラッシュやらプログレスの表示で回避するのが良策のようですね。
0304デフォルトの名無しさん
2010/11/04(木) 22:33:40非同期にやるっつったって、Dispatcher.Invoke の中で重たい処理しちゃいけないのはわかってる?
非同期開始
重たい処理
Dispatcher.Invoke
Window生成&Show
って順でやらないとダメ。
0305デフォルトの名無しさん
2010/11/04(木) 22:57:39ボタンの作成はXAMLでするの?C#で記述するの?
0306デフォルトの名無しさん
2010/11/04(木) 23:02:290307デフォルトの名無しさん
2010/11/04(木) 23:08:550308デフォルトの名無しさん
2010/11/04(木) 23:14:45データバインディングで Button.Content にテキストをバインドとかでなく?
動的に追加なら普通に C# で書くね。
0309デフォルトの名無しさん
2010/11/04(木) 23:19:43昔からそうだね
0310デフォルトの名無しさん
2010/11/04(木) 23:22:54スタイルとかよくわからないですがそれでやってみます
>>307
そうなんですか、まだXAMLでどこまでできるかよく把握していないので
ロジック分離するにも境界線がわかっていない感じです
>>308
動的なのかわかりませんが、ラップパネルにユーザーが文字を入力して作成ボタンを押すと
その文字が書かれたボタンが新しく追加されていくという感じです
0311デフォルトの名無しさん
2010/11/04(木) 23:27:250312デフォルトの名無しさん
2010/11/04(木) 23:29:05そういう用途なら ↓こんな感じでやる。
XAML 側
<ItemsControl ItemsSource="{Binding List}">
テンプレートで
<Button Content="{Binding}" />
C# 側(どこかで DataContext 設定)
View.DataContext = new ViewModel();
C# 側(ViewModel クラスで)
class ViewModel
{
public ObservableCollection<string> { get; set; }
}
0313デフォルトの名無しさん
2010/11/04(木) 23:29:46WPF で余裕。
データバインディングと ItemTemplate 強力。
0315305
2010/11/05(金) 19:08:31もう少しだけ細かく教えてもらえませんか?
ラップパネルにはItemsSourceもControlTemplateもないのですがどこのテンプレートですか?
それと作成ボタンが押されたらラップパネルにボタンが追加されるようにする方法もよくわかりません
Binding Listも何をバインディングしているのかもわかりませんでした
ViewModelクラスも何のために作成しているかわかりませんでした
一応こんな風にC#で作成ボタンのクリックイベントでボタンを作成するようにしてできましたが
private void button1_Click(object sender, RoutedEventArgs e)
{
Button button1 = new Button();
button1.Content = textBox1.Text;
button1.Background = new SolidColorBrush(Colors.White);
button1.Foreground = new SolidColorBrush(Colors.DarkGreen);
this.wrapPanel1.Children.Add(button1);
}
0316デフォルトの名無しさん
2010/11/05(金) 19:38:02WrapPanelは直接じゃなくてItemsControlのItemsPanelTemplateとして使う
で、この場合のテンプレートはItemsControl.ItemTemplate
> それと作成ボタンが押されたらラップパネルにボタンが追加されるようにする方法もよくわかりません
考え方が違う
A. 自分でやること
・ItemsControl,ItemsControlにObservableCollectionをバインドしておく
・必要なときにObservableCollectionに文字列を追加する
B. 勝手にされること
・ObservableCollectionはデータが追加されたことをItemsControlに通知する
・ItemsControlは増えたデータをDataTemplateをもとに作り上げた要素(ボタン)を自分に追加する
0317デフォルトの名無しさん
2010/11/05(金) 20:33:41http://ufcpp.net/misc/WpfApplication5.zip
0318305
2010/11/05(金) 21:07:11>>317
わざわざ作って頂いてありがとうございます
でもデリゲートいっぱい、ソースみても何を書いているのかよくわかりませんでした
それと起動しても追加ボタンが灰色のままで押せないのですが
今の自分にはレベルが高すぎる上、なぜこうすべきかもわからないので>>315のやり方でとりあえず妥協します
0319デフォルトの名無しさん
2010/11/05(金) 21:08:47コード中でボタン作るのはともかく、コードにColor.DarkGreenとか出てくるのはちょっといただけない
せめてStyle使いましょう
0320デフォルトの名無しさん
2010/11/05(金) 21:08:51おいこらw、セッカクつくってもらったんだから妥協してんしゃねえよ。
つかてめえデリゲートごときでなにびびってんだコラ。
0321デフォルトの名無しさん
2010/11/05(金) 21:10:370322デフォルトの名無しさん
2010/11/05(金) 21:11:150323デフォルトの名無しさん
2010/11/05(金) 21:11:270324デフォルトの名無しさん
2010/11/05(金) 21:12:100325305
2010/11/05(金) 21:23:47本当はスタイルしたいんだけど
C# コードでのstyleを作る方法が見つからなかった
XAMLでのコードはあったけど
でも、C#側で作ったボタンにXAML側で作ったスタイルを適用する
方法もわからなかったので
>>320
デリゲートはずっと避けてきてそれでもwinformsならそれなりのツールが
作れていたので、まった無知です
■ このスレッドは過去ログ倉庫に格納されています