1read 100read
2013年06月プログラム11: WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part16 (128) TOP カテ一覧 スレ一覧 2ch元 削除依頼
ATL/WTL Part7 (188)
【COBOLから】バッチ処理【Javaまで】 (152)
C++によるDICOMファイル解析 (183)
【初心者歓迎】C/C++室 Ver.84【環境依存OK】 (929)
【初心者歓迎】C/C++室 Ver.84【環境依存OK】 (929)
★★Java質問・相談スレッド162★★ (241)

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


1 :2013/05/30 〜 最終レス :2013/06/23
ユーザーインターフェースシステム、Windows Presentation Frameworkについて微に入り語るスレ。
Visual Studio 2012 & 2010
http://www.microsoft.com/visualstudio/jpn/downloads
Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&displaylang=ja
Microsoft .NET Framework 4.5
http://msdn.microsoft.com/ja-jp/library/vstudio/5a4x27ek.aspx
前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part15
http://toro.2ch.net/test/read.cgi/tech/1359863558/
関連スレ
Microsoft Silverlight その9
http://toro.2ch.net/test/read.cgi/tech/1321150267/
コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/

2 :
WPFでヘッダーなど、各ウィンドウで用いる共通部品はどうやって作ればいいのでしょうか?

3 :
>>2
プロジェクトを作って、コードを書いてビルドすればいい。

4 :
>>2
多分ヘッダ付きのWindowを継承して作りたいのだと思うけど。
そういうTemplateを作ってスタイルあたりで設定する。
Windowの継承だと基底クラスはxamlを使えないので。

5 :
XAMLでMainWindowにStackPanelを配置して、
このStackPanelのChildrenを、別のWindowのClickイベントの中で操作したい。
ってときには、どうやるのが定跡なんでしょうか?
MainWindow Classの中のstaticな関数をClickから呼べばいいのかと思ったけど、
そこじゃStackPanelはstaticじゃないから弄れないエラー言われて混乱中。

6 :
>>5
その別のwindowにStackPanelのインスタンスなどを渡せばいい

7 :
ありがとうございました
App.xamlにコントロールテンプレートを書いて作りました。
ただし、以下に書くようなスタイルを適用したWindowで、スタイルの中のGridの中身を書くことはできますか?
<Grid Grid.Row="1" />としても、スタイルのGridをいじれるわけじゃなさそうですが

8 :
<Style x:Key="DefaultWindow" TargetType="Window">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Window">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MaxHeight="66" />
<RowDefinition Height="*" />
<RowDefinition MaxHeight="66" />
</Grid.RowDefinitions>
<!--ヘッダー部-->
<Grid Grid.Row="0" />
<!--メイン -->
<Grid Grid.Row="1" Background="Silver" />
<!--フッター部-->
<Grid Grid.Row="2" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

9 :
Contentがない

10 :
>>2 >>7
Pageってのもあるぞ。

11 :
>>7
ContentPresenterを入れて。

12 :
あれ? .NET でWinForm アプリを得意になって作ってたけど、
WPF ?何それ?
7年くらい前に雑誌で読んだことあったけど・・・これから来ると。
いつ来てたの??
俺のアプリ、どれも地味さ加減半端ないのは
時代遅れ丸出しだったってこと?

13 :
いや、それはあんたの実力だろう

14 :
>>12
俺は3年ぐらい前に移行したぞ。
そんな俺が言うのもなんだけど、VS2010あたりでブレークした気がする。

15 :
ブレーク ブローク ブロークン

16 :
すみません。質問です。
RenderTargetBitmapのnewに時間がかかることがあります。
たぶん20ms以上かかることがあるんですが
それ自体は別に良いのですが、その間メインスレッドまで
止まってしまうようなのです。
たぶんGCが動いてしまっているのかもしれません。
何か回避策はないものでしょうか?

17 :
>>12
どーせ個人的に公開してるものなんて、ちょんプロレベルだろ?
誰も見た目なんか気にしてねーよw ちゃんと動けば。
wpf を日本語でググって勉強するとMVVM教に自動的に入信してしまうぞw
きっと入信すると結構勉強するハメになるぜ!

18 :
しかしWin8発売して暫く経つけど、Modern(Metro)アプリでWPF大人気!デスクトップでもWinFormsオワタ!!ってなんないよね・・・
そもそもM$はWPFどうしたいん?WPF使わせたいならWinForms切らないと駄目だろ??
速やかに移行させる簡単な方法はAppleが何度も示してるだろ?WinForms切ればいいんだよ、最新の.NET Frameworkは最新のWPF以外で利用できなくすればいいだけ。
マジでM$がWPFをどうしたいのかまったくわからん。

19 :
Win8自体下火だししゃーないやん

20 :
WinFXなんてものもあったなぁ(遠い目

21 :
WPFって未完成だもん

22 :
>>18
WPFの書籍も全然出ないし

23 :
winForm捨ててゴリ押ししたらそれこそ酷いことになる

24 :
MS的にFormsは終わったUIになってるんだがな

25 :
>>14
3.5のWPFはXPで文字が滲む欠点があって採用しづらかった

26 :
WPFはとりあえず基本機能充実させるのが先
API系はwinforms追加しないといけないという情けない状態
それにしてもダイアログぐらいまともなの使わせろ

27 :
うちの会社じゃ2〜3年前かWPFでまともな業務アプリ組めてるんだがな。

28 :
まあいつの時代もこれなんだよな
新しい技術は、覚えれば使いやすいけど、細かいことをやろうとすると
融通が利かなかったり問題が起こったりする
結局古い技術の方が万能

29 :
で、まだまだVB6が現役なわけですね。

30 :
うむ

31 :
VBはない

32 :
wpfに出来てformにできないことって何?

33 :
何だろう・・・?

34 :
layout

35 :
UIのアニメーションが簡単

36 :
wpfに出来てformにできないこと ってだけなら
気合と時間かければ何でもできんじゃない?
ただWPFでやると簡単なことが滅茶苦茶
難易度上がって手間がかかるだけ

37 :
>>36
業務アプリ作るには、もはやWPFの方が簡単。
手間と時間と難易度でWPFが圧勝。

38 :
>>37
まさにそういってるんだけど…
あ、もしかして逆の意味に取られたか?
> ただWPFでやると簡単なことが、
> 【Formだと】 滅茶苦茶 難易度上がって手間がかかるだけ
のつもりで書いてたんだけど、
> ただWPFでやると
> 【Formでなら】 簡単なことが
>滅茶苦茶難易度上がって手間がかかるだけ
と読まれてしまったか? 全く逆の意味になるな、そう読まれたかw
でも、formだと気合と時間かけないとできないって前段落で書いてるだろ
まぁ結局37と意見は同じようだけど、
他にも逆の意味で読む人いるといけないから一応書いとく。

39 :
WPFやった後にはもういちいちオーナードローとかしたくなくなる。

40 :
いや>>37が文盲なだけ

41 :
馬鹿
オーナードローしてダブルバッファ設定して
ちらつかなくなった時の達成感はすばらしいだろ

42 :
業務用のデータ表示を何でやってるのか気になる
datagrid使ってるのかな?
アクセスより遅いし表示が汚いんで使う気にならない

43 :
DataTemplate使いこなせばListBoxだけでかなりのことできるよ

44 :
動的レイアウトが楽

45 :
WPF3.5で作っています。
ListBoxを右クリックした時にContextMenuを出したいです。
 ・項目が無いところを右クリックした場合は「新規作成」のMenuを表示
 ・項目があるところを右クリックした場合は「名前の変更」「削除」のMenuを表示
のように表示されるContextMenuを切り替えたいのですが
どのように記述すれば良いのでしょうか。
現状では下記のように書いており、どこを右クリックしても
「新規作成」が表示される状態です。(そう書いているので当然ですが)
<ListBox ...>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="新規作成" Click="MenuItem_CreateCategory_Click" />
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>

46 :
WPF3.5で作っています。
ListBoxを右クリックした時にContextMenuを出したいです。
 ・項目が無いところを右クリックした場合は「新規作成」のMenuを表示
 ・項目があるところを右クリックした場合は「名前の変更」「削除」のMenuを表示
のように表示されるContextMenuを切り替えたいのですが
どのように記述すれば良いのでしょうか。
現状では下記のように書いており、どこを右クリックしても
「新規作成」が表示される状態です。(そう書いているので当然ですが)
<ListBox ...>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="新規作成" Click="MenuItem_CreateCategory_Click" />
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>

47 :
ListBoxとListBoxItemに別のコンテキストメニュー設定すればいいんでないの?

48 :
DataTemplateSelector使って、
項目のない行と、項目のある行に別々のDateTemplate適用させて、
それぞれのDataTemplateの中で別々のContextMenuを設定
でいい気がする

49 :
>>47-48
レスをありがとうございます。
DataTemplateSelectorを使ったことが無かったので
色々とググっておりますが、使い方が分かりません。
参考になるサイトや、
もし簡単に書けるようでしたら
例を示していただけないでしょうか。
宜しくお願いいたします。

50 :
ほれ
<ListBox
  ItemsSource="0123456789">
  <ListBox.ContextMenu>
    <ContextMenu>
      <MenuItem
        Header="ListBox" />
    </ContextMenu>
  </ListBox.ContextMenu>
  <ListBox.ItemContainerStyle>
    <Style
      TargetType="ListBoxItem">
      <Setter
        Property="ContextMenu">
        <Setter.Value>
          <ContextMenu>
            <MenuItem
              Header="ListBoxItem" />
          </ContextMenu>
        </Setter.Value>
      </Setter>
    </Style>
  </ListBox.ItemContainerStyle>
</ListBox>

51 :
>>49
"DataTemplateSelector ListBox"でググッたら一発で出て来た使用例w
ttp://mikestedman.blogspot.jp/2009/04/datatemplateselector.html
この例だと、
BookingLineItemクラス・CashPaymentLineItemクラス・CCardPaymentLineItemクラスと、
いろんな型のごちゃまぜのコレクションをVMがSaleItemsってプロパティで公開して
そこにバインドしてる感じだね。
で、1つのListBoxだけど、1つ1つのクラスによって表示方法を変える仕組み。

52 :
>>50
ありがとうございます。
いただいた例ですと下記URLと同じ例外が発生しており、
同解決方法で希望通りの動作にできました。
ありがとうございました。
ttp://stackoverflow.com/questions/3280121/contextmenu-in-style-setter
>>51
ありがとうございます。
ですが申し訳ありませんが、今の私には内容が難解すぎて
まったく理解できませんでした。
いつか理解できるようになるよう、勉強を続けます。

53 :
このブログを参考にして、というか丸パクリして
PasswordBoxにヒント表示(何も入力されていない場合に半透明で表示する文字列)
するようにできました。
http://brentstewart.net/blog/post/2013/02/18/How-to-add-watermark-text-to-a-PasswordBox
ビルドは通って実行もできるのですが、
XAMLのデザイナーの画面で
エラーが表示されています。
エラー内容は以下の通りです。
エラー一覧の説明: "Enter your password" は変換できません。
エラーの詳細: "MyPasswordBox" で FormatException がスローされました: "Enter your password" は変換できません。 詳細を非表示にするにはここをクリックしてください。
          ハンドルされていない例外が発生しました
          文字列が有効な Boolean 型として認識されませんでした。
          場所 System.Boolean.Parse(Sring value)
          場所 System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
例外が発生しているにも関わらずビルドが通り、実行にも問題ありませんが
このエラーの解消方法は分かりますでしょうか。

54 :
エラーそのままじゃないか?
GetPlaceHolderTextはなぜbool?

55 :
>>54
String に変更したらエラー表示がなくなりました。
確かに仰る通り、気が付きませんでした。お恥ずかしい。
ありがとうございました。

56 :
WPFってVB6とStruts1.xとVBAしか知らないうちの会社のPGでも使いこなせるかな?

57 :
無理ww

58 :
.NETへの移行からか…。勝手にWPF採用決めてPGに丸投げしたら絶対詰むぜ

59 :
>>57
そうおっしゃらずに、そこを何とか!
使えないPG割り当てられて困ってるんです><

60 :
使えるPGですら難しいのに

61 :
しかし、今でも泥船に乗ってるのに、泥船から泥船に移行しなくても良いと思うんだがw

62 :
>>59
しっかり分かっている人がいるなら
分かってない人にも業務画面のような仕事は割り振れると思う。
勝手にややこしい実装されないように
WPFの大部分を端折った手順書を用意しよう。

63 :
勝手にややこしい実装ってのは、MVVMディスってんのか?

64 :
VBA(笑)

65 :
VB6いいよね
というか6は色々完成度高かったな

66 :
すみません、誰か教えてください。
「Extended WPF Toolkit V2.0.0」をVisualStudio2012で使いたいんですが、
http://wpftoolkit.codeplex.com/documentation
の通りにやってみても上手くいきません。
プロジェクト → 参照の追加 → 参照(B).. →  Xceed.Wpf.Toolkit.dllを追加
これで参照設定にはちゃんと Xceed.Wpf.Toolkitが表示されています。

67 :
xamlファイルに追記
  xmlns:xctk=”http://schemas.xceed.com/wpf/xaml/toolkit”
csファイルにも一応追記
  using Xceed.Wpf.Toolkit
例えばDateTimePickerを使う場合
  <xctk:DateTimePicker />
すると次のエラー
  名前 "DateTimePicker" は名前空間 "http://schemas.xceed.com/wpf/xaml/toolkit" に存在しません。
他のコントロール(CheckListBoxやIntegerUpDown等)でも同様

68 :
自動補完で出てくる
xmlns:xctk=”clr−namespace:ExtendedToolkit” 

xmlns:xctk=”clr−namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit”
で試してみても同様
なんか基本的なところが間違っているんでしょうが、、
(連続投稿すみません。http抜いてもリンク禁止と怒られるので全角にしてあります)

69 :
自己解決しました。
csソースからToolkitのコントロールを直接newしてやると利用できたので、
まさかとは思いながらVisualStudio2012をUpdate2からUpdate3RC2に更新したら
XAMLからも普通に利用できるようになりました。
酷いよマイクロソフト…
スレ汚し失礼しました。

70 :
MVVMなんて業務アプリ作るには知らない方が良い知識。

71 :
データバインドに滅法強いMVVMは非常に業務アプリ向きのアーキテクチャだろ

72 :
別にMVVMでないとデータバインドできないわけではないですし

73 :
56ですがもしかして同じ.NETでもWinFormsの方が簡単ですか?
SEが半透明表示やスクロールなんかのビジュアル面も重視したいから、って
WPFにしようってあまり詳しく考えずに採用しちゃったんですよ。
で、我が社はJavaとVB6(+VBA,COBOL)しかできる要員がいないので、
どうしたもんだか、と相談に来た次第です。

74 :
まずそのSEと話せよ

75 :
レイアウトの考え方はWPFのほうがJavaに近い

76 :
そのSEがWPFを熟知してるならまあ大丈夫だろうが
そうでないならネット上での情報差もすごいあるし
WinFormsのが無難
WinFormsならdobonさえあればなんでも作れるからな

77 :
まずVBerを抹殺してからJava要員にC#を叩きこめ

78 :
現時点でWPFで何が可能で何が困難かまったく理解してないんですが、
WPFでストアアプリ風の、タッチ操作指向のUIを作るのはやはり難しい?
だったら素直にWinRTでやれよって思うかもしれないけど、
WinRTには頒布の問題や機能制限があって本質的に向いてない分野があるので

79 :
>>73
仕事なら金払って業者に訊けよハゲ

80 :
>>76
はぁ? って返したくなるな。
今じゃWPFの方が色んな意味で無難だろ。

81 :
これこれ自分の立場でしかものを考えられない

82 :
>>78
簡単だよー。WinRT より機能が多い分、どう作るのが良いのかは分かり辛いけど。

83 :
WPFのベクタグラフィックってatomのGPUでもちゃんと動くもんなの?
なんか円表示するだけですげー重いんですけど・・・
ソフトの作りが悪いのかベクタ処理自体が重いのか判らない

84 :
質問させてください。
VisualStudio2012からRibbonコントロールが標準(System.Windows.Controls.Ribbon.dll)に
なったということで使用してみました。
<RibbonButton>のLargeImageSourceに画像を設定して、ボタンの
アイコンを表示してみたのですが、画像アイコンの表示が
汚いです。
(表示される画像のエッジ部分がガタガタして、アンチエイリアスがかかっていない?)
綺麗に表示するためにはどうしたら良いのでしょうか?
宜しくお願いします。

85 :
サイズがおかしいんじゃねーの
つーか画像に勝手にアンチエイリアスなんてかけられたら嫌だろハゲ

86 :
ゆとりグラマーが多いんだよ

87 :
>>85
回答有難うございます
<RibbonButton>のLargeImageSourceに設定する画像の
最適なサイズ、解像度について教えて頂けないでしょうか?
<Button>に画像を設定して表示する場合は、スムーズに表示されます。
<RibbonButton>でも同じように表示したいです。

88 :
RibbonImageSize
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.ribbon.ribbonimagesize.aspx
ここ読めやぁ

89 :
WPFのTextboxなのですが、デフォルトでIMEがONになっていて
日本語入力モードになってしまいます。
IMEを無効にはできたのですが、デフォルトでIMEをOFF状態に
できなくて困っています。どうしたものでしょうか?

90 :
困ってないだろ。1個1個設定したらいい。なにも問題はない

91 :
すみません。ウィルスのせいでした。

92 :
>>89
スタイルで設定すれば、Window内の全てでも、アプリ内の全てでも、
範囲はスタイルを置く場所次第だな
<Style TargetType="TextBox">
  <Setter Property="InputMethod.IsInputMethodEnabled" Value="False"/>
</Style>

93 :
ありがとうございます。
どうもWPFのバグっぽいです。
XPの場合にloadedイベントでtxtbox.focus()をすると
そのtextboxがIMEオンになってしまいます。
7の場合はIMEオンになりません。これはあきらかにWPFのバグですね。

94 :
Buttonコントロールのフォーカスを利用した処理をしようとしています。
Buttonを2つ置き、それぞれの名前を btn_a, btn_b とします。
2つのボタンには LostFocus() イベント発生時に処理をするように
btn_a_LostFocus() 関数と btn_b_LostFocus() 関数を設定します。
ここで、btn_a, btn_b は、
 ・ボタンからフォーカスが外れた時に処理をしたい
 ・ただし、btn_a ×N回 と btn_b ×M回 を交互に押している場合には
  処理は実行しない
としたいです。
btn_a, btn_b を、↑ボタン、↓ボタンとすると、↑と↓をポチポチ押している時は
処理はせず、別のコントロールにFocusが移った時に処理をしたい、という感じです。
以下のように書きましたが、if文の中に入ってしまい
希望の動作となりませんでしたが、どのように書けば良いのでしょうか。
private void btn_a_LostFocus(object sender, RoutedEventArgs e) {
if (!btn_b.IsFocused) {
// 処理(btn_aを押してからbtn_bを押すと、ここに入ってしまう)
}
}
宜しくお願いします。

95 :
いまいち何がしたいのか文章理解できなかった

96 :
AでもBでもないところにフォーカスが移ったら処理したいんだろ
生き写しのルール文章みたいだ

97 :
>>95
確かに分かりにくい文章でした。すみません。
>>96
はい。AでもBでもないところにフォーカスが移ったら処理したいです。

98 :
条件に「キーボードのフォーカス」も追加したら、
希望の動作になりました。
IsFocused はなくても十分なのかもしれませんが、
これから検証します。お騒がせしました。
private void btn_a_LostFocus(object sender, RoutedEventArgs e) {
if (!( btn_b.IsFocused || btn_b.IsKeyboardFocused )) {
// 処理
}
}
private void btn_b_LostFocus(object sender, RoutedEventArgs e) {
if (!( btn_a.IsFocused || btn_a.IsKeyboardFocused )) {
// 処理
}
}

99 :
なぜか知らないがクソアプリだと分かってしまったわ

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part16 (128)
くだらないアルゴリズムを考えるスレ (183)
つまりRubyってPerlの後続じゃん? (192)
Cygwin + MinGW + GCC 相談室 Part 7 (152)
Go の宿題片付けます (142)
PureBasic (173)
--log9.info------------------
はしかの流行 (143)
新型インフルの疑いリストを淡々と更新するスレ (147)
大阪インフルエンザ★2 (106)
■ 近くで鳥が死んでいたらageるスレッド (131)
家族が新型を発症したが自分は高熱等でなかっった人 (119)
触れるだけ・近づくだけで感染する病気 (107)
■インフルエンザにかかったことがない人■ (194)
ハンセン病総合スレ (103)
俄かに脚光浴びているドクターサチについて語るスレ (116)
豚インフルエンザ陰謀説 (137)
関西大倉生だけど何か質問ある? (107)
温暖化で眠ってたウィルスが覚醒る (106)
【信じたら】トンデモサイト@新型感染症【危険】 (123)
湿疹のある風俗嬢を抱いてしまった (109)
東京人は「感染防止」より「商売(ゼニ儲け)」か? (144)
パンでミック対策まとめ (121)
--log55.com------------------
消えてほしい人間を書きなぐるスレ49
幻の心霊写真・動画を追え!Part21
ここに書かれた奴は厄災が襲い惨めに死んでしまう76
ここに書かれた奴は厄災が襲い惨めに死んでしまう55
ネアンデルタール人 Part2
【ID非表示】書き込むと奇跡が起きるスレ【☆】13
【怪奇】静岡県の心霊スポット【妖怪】その1
【継続夢】夢の中のもう一つの世界 4【シンクロ】