[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/01 19:54 / Filesize : 272 KB / Number-of Response : 1014
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part91



1 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 23:45:15.36 ID:EZjVZgG6.net]
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
echo.2ch.net/test/read.cgi/tech/1455160063/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

75 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 20:40:02.61 ID:RPJf2WNu.net]
WinFormは趣味グラマにとってぬるま湯で居心地がいいw
IDEのおかげで下手なスクリプトより楽だし

76 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 20:51:54.08 ID:360M0HJP.net]
>>55
すまん。完全にごっちゃになってた。

>>59
その例だとXAMLにx:Name="textBox1"が抜けてるぞ。
XAMLでの<TextBox>タグの宣言こそが、TextBox textbox1 = new TextBox();
に相当するってだけで、別に隠しちゃいない。

77 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 20:58:12.04 ID:RPJf2WNu.net]
ついでに流れに乗っておくと
>>58
WPFはGDI+(WinForm)よりもグラフィック関連は速くなるものだと思っていた
WinFormは扱うデータサイズが大きくなると消費するメモリサイズが飛躍的に増えるんで、グラフィック関連は扱うのにあまり適していないんだよな

78 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 21:15:33.89 ID:360M0HJP.net]
>>76
あるポイント数を超えるとまったく実用じゃないくらい遅くなるね。
ポイント数が多くてスピードが要求される場合は、DirectXを使って高速描画出来る有償のコントロールを買うしか無さそう。

数年前の資料だけど、各種チャートコントロールの性能比較
WPF Charting Performance Comparisons (the Battle Continues)
blog.scottlogic.com/2012/04/24/wpf-charting-performance-comparisons-the-battle-continues.html

79 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 23:17:39.44 ID:6Cpjtpfi.net]
ポイント数が多くてスピードが要求されるなら、データを間引いたほうが現実的じゃなかろうか?
データ視覚化なら2、300もアレば十分だろ

80 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 23:28:48.20 ID:o3gm2pi/.net]
そんな高度なことができるわけないだろ

81 名前:デフォルトの名無しさん mailto:sage [2016/11/08(火) 23:52:00.16 ID:6Cpjtpfi.net]
>>79
もうちょっと頑張れ

82 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 00:13:40.23 ID:HQuuA4JA.net]
>>49
他のベンダーのヘルプとか見たことないんだろ
MS なんてかなりまともな方だと思う

83 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 01:04:00.05 ID:SotHgA9V.net]
>>78
系列が少なければね。



84 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 01:09:36.44 ID:SotHgA9V.net]
>>62
知らないのに当てずっぽうで書いてるのが良く分かるな

85 名前:デフォルトの名無しさん [2016/11/09(水) 02:23:18.79 ID:pYqjQFAT.net]
>77
イケてるやないか。 でもデータバインディングやったらボロボロ。W

86 名前:デフォルトの名無しさん [2016/11/09(水) 02:57:40.95 ID:pYqjQFAT.net]
>に相当するってだけで、別に隠しちゃいない。

隠すつもりがなくても視認性が悪いから隠れるんだな。これが、、

WPFの肝は
1.UI部分は XAML で記述
2.実行コードは C# または VB
3.グラフィックス描画は DirectX
4.データドリブン的なものをデータバインディングでやる

1.と4.が手抜きでいい加減だから全然だめ。
1が駄目だから2を書こうにもどう書いたらいいのかわからないというジレンマ
4がダメだから遅いし使いにくいし使い物にならないしトータル的には失望を加速
している。

料理の材料はまあこんなものでいいというか素材は素晴らしい。しかし集めて料理
するんならもっと一つ一つを丁寧に作りこまなくてはだめだろ。これじゃ味の
バランスが悪くて料理になってない。もうひと手間かけるのができないんだよな。
最後までやりきることができない。思い付きと能書きは立派。W

87 名前:デフォルトの名無しさん [2016/11/09(水) 03:24:51.72 ID:pYqjQFAT.net]
<Window x:Class="SliderTest.Window1"
xmlns="schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" Background="LightBlue">
<Grid>
<TextBox Height="24" HorizontalAlignment="Left" Margin="30,19,0,0"
Name="textBox1" VerticalAlignment="Top" Width="72"
Text="{Binding ElementName=slider1, Path=Value}"/>
<Slider Height="22" Margin="28,64,20,0" Name="slider1" VerticalAlignment="Top" />
</Grid>
</Window>

この書き方は糞
Text="{Binding ElementName=slider1, Path=Value}"/>

こうなるのが正解。
Text="{Binding slider1.Value}"/>

88 名前:デフォルトの名無しさん [2016/11/09(水) 04:07:40.94 ID:pYqjQFAT.net]
ファンクションキーのイベント発生に見れるセンスのなさ
こんな書き方はどんだけ糞か? ネーミングのセンスがまるでない。
PreviewKeyDown="Window_PreviewKeyDown"

これがセンスのいいなまえ
FunctionKey = "KeyDown"
もしくは
KeyDown="FunctionKey"
KeyDown="F1"
など

89 名前:デフォルトの名無しさん [2016/11/09(水) 04:26:59.85 ID:pYqjQFAT.net]
プロパティ値の継承に見る手抜き
 プロパティ値が割り当てられていない子要素がある場合、プロパティ値の設定がある
最も近い親要素の値を割り当てる。W 

まあこういう問題が発生するのも、手抜きが手抜きを生むことの良い例だ。ボタンコン
トロールひとつを表すのに手近な要素をかき集めて作りあげるという手抜きをしたこと
で、イベントがうまく取れないという問題が発生した。そこでイベントルーティング
という新たな手抜き概念を導出してしかもプロパティ継承という誤魔化しまでしなくて
はならなくなった。
 トンネル、バブル、ダイレクト イベント一つにこんだけ複雑なことをする羽目にな
ったのも、最初に行ったわずかな手抜きが原因なのだ。

90 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 04:29:27.99 ID:9orsc4MQ.net]
>>86
>>87

業務で使う場合はViewとViewModelをきっちり分けるよ
なのでバインディング式は下記のように
<TextBox Text={Binding ResultMessage} />
シンプルになる。

View内の他の要素の値をバインドするなんて
滅多にないから(デバッグ時くらい?)、{Binding ElementName=slider1, Path=Value}
みたいな冗長な書き方はいいと思う。

装飾系も普通はResourceDictionaryにまとめる。TextBoxタグ内にゴテゴテ書いたりしない
<Window.Resources>
 <ResourceDictionary>
  <Style TargetType="TextBox">
   <Setter Property="VerticalContentAlignment" Value="Center" />
   <Setter Property="HorizontalAlignment" Value="Left" />
   <Setter Property="Foreground" Value="{StaticResource GlobalForeground}" />
  </Style>
 </ResourceDictionary>
</Window.Resources>

キー押下時のイベント発生もViewはCommandをViewModelに発行するだけだね
<Window.InputBindings>
 <KeyBinding Gesture="Ctrl+T" Command="{Binding MenuOpenCommand}" />
</Window.InputBindings>

イベント発生時の処理内容をxaml.csに記述したりはしない

91 名前:デフォルトの名無しさん [2016/11/09(水) 04:36:52.64 ID:pYqjQFAT.net]
データバインディングに見る手抜き
「WPF のデータバインディングはこれだけで 1 冊の本が書けるほど面倒です。」という
関係者。たったこれだけで関係者が本を書いて10年は食える飯のタネになる。W

WPFにおけるデータバインディングの重要性と可能性はこの限りにおいては非常に成功
している。テーマとしては食いつきがいい。「これさえマスターすれば、あとは
データを流し込むだけで自動的に表示してくれる」
魅力的なのだ。
食いつきがよくて、複雑怪奇な場合には関係者は情報を小出しにすればかなり長期に
わたってよい飯の種になる。

92 名前:デフォルトの名無しさん [2016/11/09(水) 04:37:26.02 ID:pYqjQFAT.net]
さあ寝よう。おやすみ

93 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 07:27:40.65 ID:ccPtaul1.net]
>>91
そこら辺が問題だと思うのなら、全て解決したUWPに移行したら良いんじゃないのかな?
x:Bindで事前バインディングで厳密に型チェックヤるし、イベントバインディングも出来るからな

つか、アンタの言い分はイソップ童話の酸っぱいブドウそのものです



94 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 07:54:15.04 ID:TlbuxVnv.net]
個人的にUWPに偏見を抱いている理由はOneNoteが糞なせい
OneNoteの糞さはUWP無関係だと思うが、自分の観測範囲にUWPの実用サンプルがそれしかないので
どうしても印象が引っ張られる

95 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 09:17:12.31 ID:KnEUpDo2.net]
XAMLに親を……

96 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 09:17:36.57 ID:SotHgA9V.net]
>>87
KeyDownってイベントは別にあるぞ

>>88
もはや言いがかりのレベルだな

97 名前:デフォルトの名無しさん [2016/11/09(水) 12:09:48.16 ID:pYqjQFAT.net]
>89
どんな糞言語でも本質をよく見極めてセンス良く使う人はいるものだよ。

しかしそこに到達するまでにどんだけ時間がかかるというのだ。俺なんかわけわからん
から右往左往するばかりだよ。

せめてBlendをまともに作ってくれれば、それなりにUIの問題は解決するのにな。
Blendも糞だろ。W 最近のは使ってないからわからんが、、、

98 名前:デフォルトの名無しさん [2016/11/09(水) 12:10:37.11 ID:pYqjQFAT.net]
>そこら辺が問題だと思うのなら、全て解決したUWPに移行したら良いんじゃないのかな?
>x:Bindで事前バインディングで厳密に型チェックヤるし、イベントバインディングも出来るからな

今度はUWPかよ。小出しにするなー。つまりWPFは糞だったと認めるんだな。W

99 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 12:12:21.25 ID:C35LXred.net]
UWPは互換性取るために使えない機能が多すぎてFormやWPFと比較する気にもなれない

100 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 13:18:01.59 ID:imHVERPt.net]
で?。W

101 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 13:24:22.96 ID:13V/HCY3.net]
またストアアプリみたいにいつ梯子外されるかわからないUWPに手を出す人は
よっぽどお勉強好きなんだろうなw

仕事ならしょうがないけど自分の時間使って勉強する気にはなれんわ

102 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 13:44:46.30 ID:U6OuotlL.net]
WPFに手だしちゃった人ならいけるでしょ

103 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 16:05:04.67 ID:L45XBX69.net]
>>87
コードビハインドにイベント書くことはおすすめされないし、そもそもPreviewKeyDownってFunctionキーのイベントを受け取るためのイベントじゃないぞ?
WinFormsにも同じ名前のイベントあったじゃん

WPF以前の根本的な能力がかけてるんじゃね?



104 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 19:12:41.31 ID:UPD5ANvk.net]
UWPって多重起動できるんですか?

105 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 19:23:20.90 ID:c1gJ8Ir2.net]
Windows10のPCは買ったけど、予備にした古いPCで動かす事を考えたらUWPは使いたくないな
まだ動く7とXPのPCがあるからな

106 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 20:02:19.12 ID:xK7OwzcU.net]
WPFやってないんだが、そもそもXAMLは人間が見る必要のあるものなのか?
VSのデザイナやBlendがダメすぎるのか?
フォームでさえ、.Designerの中身なんてほぼ見る事ないのに

人間が生のXAML見たり編集したりしないとダメならそら普及しないなと思うが

107 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 20:09:14.52 ID:y+VOBp5j.net]
XAMLはなにもかもXML(?)で記述できるようにしようとして失敗してる感じ
レイアウトだけにしとけばいいのに

108 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 20:09:22.06 ID:knOh/4SR.net]
データバインディングが遅いとかいって大量データをなんの工夫もなく描画する画面を引き合いに出す人ってたまにいるけどあれって悪意があってやってるの?

109 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 21:24:36.59 ID:WmFTPhhE.net]
普通、設定ファイルを、人が直接いじったりしない

Godot(ゴドー)などのゲームエンジンでは、IDEの右側にある、
インスペクタービューで、プロパティなど設定する

オブジェクト同士の衝突判定・イベント通知なども、同じ

110 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 21:25:12.33 ID:TlbuxVnv.net]
どこぞのフレームワークで「人間にXMLを書かせるなんて虐待です」って書いてるのがあったけど
ほんとその通り

111 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 23:41:49.58 ID:7n7DDFeG.net]
つうかここってC#+Windowsフォームしかやってないやつばかりなの?
XAMLはそもそもWPFだけのもんじゃないんだが。
Silverlightにも使われていたしUWPにも使われてる。
そしてC#だけじゃなくVBにも使われてる。
つまり、言語や

112 名前:Nラスライブラリなどから分離できるものは分離しようっつーのがXAMLでしょ。
C#/VBとXAMLの関係はJavaScriptとHTMLの関係と似てる。
XAMLを批判してる奴ってほんとにXAMLを理解してんの?
[]
[ここ壊れてます]

113 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 00:11:40.20 ID:TlbdJV8L.net]
1日で挫折したのにここまで批判できる >>48 はすごい人



114 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 00:22:28.24 ID:4pFcdHJl.net]
JavaScriptとHTMLではなくJavaScriptとJSONの方が近いな
XAMLはただのシリアライズフォーマットの1つでしかない
WPFと関係ない普通のオブジェクトもXAMLにシリアライズできる
そんでXAMLはJSONと違って型とアセンブリの情報を持つ
UIデザインを宣言する手段として考えると書きにくいXAML形式よりシンプルでインテリセンスもよく働くC#コードの方が優れているのは確かだろう
しかしそうではなく可視性と可搬性のある普遍的なシリアライズフォーマットとして考えるとXAMLがXMLを採用したのは自然な帰結と言える
可視性のためにはテキストでなければならない
可搬性と普遍性では対抗馬としてJSONがあるがJSONはシンプルすぎて表現力がちょっと物足りない
となるとXMLは妥当な選択と言っていい
新しい時代に乗り遅れてXMLにしたわけでもないし虐待目的でXMLにしたわけでもない
XAMLの目的に合致するフォーマットではXMLがベストだったというだけの話なんだ

115 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 00:29:57.49 ID:ApowNrKS.net]
wpf使うならelectronでいいや感ある

116 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 01:16:39.44 ID:Co+DcSGG.net]
AndroidStudio使っててもXMLは出来るだけいじりたくないw

117 名前:デフォルトの名無しさん [2016/11/10(木) 01:52:09.10 ID:aHkFnxeg.net]
>102
ん?
それは考え方に矛盾があるだろ。UIを切り離すのが目的

118 名前:ネら、切り口がシンプルで
綺麗なほうがいい。
例えばスクロールバーと連動して値を表示する場合なんてUI内でまとめて片づけて
しまったほうがいい。
ほしいの値だけで、処理側からしたらくだらないイベントなんて見えないほうがいい。
そっちでまとめてやってほしい。
[]
[ここ壊れてます]

119 名前:デフォルトの名無しさん [2016/11/10(木) 01:52:28.80 ID:aHkFnxeg.net]
>XAMLを批判してる奴ってほんとにXAMLを理解してんの?

理解できないなから文句を言ってるんだよ。機械が簡単に理解できるからって
人間にそれを押しつけるのは間違い。
XAMLってのは単なるテキスト文書じゃない。プログラム全体から複雑なUIを切り離して
表現するという目的がある。複雑なUIは手打ちで入力するようなものじゃない。

UI={動作、表現、パラメータ、、、、}+窓口

プログラム=>窓口

UIの窓口さんにいえば{、、、}なかはわからなくても大体処理できる。そういう関係
なわけよ。窓口が美人でテキパキしてないとダメだろ。
時々あるんだが、大企業の開発部に電話してるのに田舎のおばちゃんみたいなのが
窓口で
「はあ、田中さんは今日はおらんよ、どっかに出張するからって鞄を下げて出て行った
よ」
みたいな感じな。
XAMLの美人の窓口さんはどこ? ねえ

120 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:08:02.40 ID:CCFq8Qep.net]
>>111
批判って言うより、ほとんどいちゃもんだけどな。

121 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:16:50.13 ID:lTw5QLQW.net]
長文マンは無駄に下手な比喩ばっか使って文意がわかりづらいな

122 名前:デフォルトの名無しさん [2016/11/10(木) 02:20:15.15 ID:aHkFnxeg.net]
じゃあ具体的に書いたろか

textBox1.Text = "Hello, World!"
これでいいのに

public class Data
{
public string TextHelloWorld
{
get { return "Hello, World!"; }
}
}
example.xaml
<TextBox Text="{Binding Path=TextHelloWorld}" />

これだもんな。W
XAMLがデータを取りに行ってくれる。一見便利だが、いちいち細かい指示を出して
説明してやらんと分からんやつだから、教えるほうが手間。自分でHello!!て
書いたほうがなんぼかまし。
あれだ、パラダイムシフトだなんだって言ってるが、シフトダウンだよな。

123 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:26:27.64 ID:wdbpo9Rt.net]
それXAML側でName="textBox1"と定義してやれば、this.textBox1.Text = "Hello, World!"で済むだろ



124 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:30:19.81 ID:YdauEkQ9.net]
WPFとFormを同じXAMLから生成出来ればもっと使い道もあるんだけどな

125 名前:デフォルトの名無しさん [2016/11/10(木) 02:31:25.72 ID:aHkFnxeg.net]
比喩だとわからんか?
窓口ってのは会社の顔だよ。XAMLの顔はというとBindingだ。ここが窓ぐち。
こいつが田舎もんだから、、、、W

126 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:33:21.09 ID:4pFcdHJl.net]
>>122
でもそれってXAML関係ないじゃん
なんでさっきXAMLディスってたの?

127 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:33:22.15 ID:wdbpo9Rt.net]
わざとミスしてレスが欲しいのか自分の主張を通したいのかどっちなのよ

128 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 02:55:22.89 ID:bu4ikKWV.net]
>>119
ぇ、それだけじゃXAMLは取りに行かないよ。
Dataクラスからの通知機構は無いの?

129 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 03:08:35.71 ID:zCCtWAZL.net]
>>115,116
?例が適当すぎて言いたいことがわからん
スクロールバーと連動して値を表示するのはバインディングで済むからUIのイベントなんて使わないだろ

UIを切り離すんじゃなくて、VとVMを切り離すのが目的

130 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 03:17:22.84 ID:zCCtWAZL.net]
>>119
バインディングする意味のないソースを出されても

さっき言ったスクロールバーとその値を表示するテキストボックスの例を見ればいいんじゃない?
バインディングを使わないとイベントを利用してそれぞれの値を相互に書き換える必要があって面倒とかそういうの

131 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 06:37:59.52 ID:B4277xpo.net]
XAMLを批判したいけどちゃんと理解してないから筋の通った批判ができない悲しさ

132 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 07:36:13.26 ID:o8sMendu.net]
>>126
例えばGridSplitter付きのパネルの開閉をアニメ付きでヤるとしたら、xamlじゃとても書けないけど
VMにやらせる仕事じゃないって場合とか、BringToViewなんかもViewで完結させるべき仕事だね
ビヘイビアやトリガーアクション使ってもいいけど無理やり突っ込むこともない

133 名前:デフォルトの名無しさん [2016/11/10(木) 07:51:19.71 ID:aHkFnxeg.net]
<TextBox Name="Text1" Height="23" Width="70" Margin="5"
HorizontalAlignment="Left" VerticalAlignment="Top"
Text="Button" />

<Button Name="btn1" Content="{Binding Text1.Text}" Height="23" Width="70"
Margin="5,35,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Click="Button_Click"/>

ちっともBindingせんがーーー。W
エラーもでんし。



134 名前:デフォルトの名無しさん [2016/11/10(木) 07:53:05.39 ID:aHkFnxeg.net]
>128
このバインドの書き方のどこが筋が通ってないんや?

135 名前:デフォルトの名無しさん [2016/11/10(木) 08:11:55.57 ID:aHkFnxeg.net]
this.DataContext =this;
 そうだこれがぬけてると検索場所が特定できんのだ。
私は私ですから私を検索してくだされ。

えっ、これでもやっぱりだめ。

136 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 08:24:57.67 ID:o8sMendu.net]
彼の言うXamlの欠点とやらは、マークアップ言語ならどれでも持っているもので
xamlはhtmlと比べたら格段に進歩した代物だ

まあこんなケチを付けているんだから
htmlなんて触ったことない化石プログラマーなんだろうね

137 名前:デフォルトの名無しさん [2016/11/10(木) 08:57:47.72 ID:aHkFnxeg.net]
マークアップの欠点とBindingの欠点と、、、と幾つかの欠点を併せ持っているという
ところが味噌。

138 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 09:16:40.69 ID:o8sMendu.net]
可読性を問題にしていたはずが、ロジックとマークアップが混在するhtmlを批判せずに
それを解決する方法のBindingにケチをつける

化石の末期だなw

139 名前:デフォルトの名無しさん [2016/11/10(木) 09:43:37.91 ID:aHkFnxeg.net]
<Window.Resources>
<SolidColorBrush x:Key="MyBrush" Color="Blue"/>
</Window.Resources>
ボタンのインスタンスIDはNameでリソースの場合hx:Keyかよ。笑かすな。W

140 名前:デフォルトの名無しさん [2016/11/10(木) 10:15:41.71 ID:aHkFnxeg.net]
物事を識別するには名前が肝心である。名前は適切で少ない方がいい。

大本の識別機構の混乱
XAMLコード中でIDictionaryインターフェイスを実装する要素に子要素を追加する際には
x:Key 属性の指定が必須
 ただし、Styleクラス(System.Windows名前空間)のように、クラスにDictionaryKeyPropertyAttributeを付与して、(x:Key 属性の)代替となるプロパティ(Styleクラスの場合はTargetTypeプロパティ)を設定しているクラスの場合には、x:Key属性 を省略可能。
Styleクラスでは、x:Key 属性の代替としてTargetTypeプロパティを利用している。

高々リソースに名前振るだけで、、、ぷっ。

141 名前:デフォルトの名無しさん [2016/11/10(木) 10:16:51.48 ID:aHkFnxeg.net]
>135
無批判に受け入れるのはよくない。「飼いならされて、食用にされる家畜」だよ。
In the world's broad field of battle,
In the bivouac of Life,
Be not like dumb, driven cattle !
Be a hero in the strife !

142 名前:デフォルトの名無しさん [2016/11/10(木) 10:29:24.03 ID:aHkFnxeg.net]
@ITデータバインディングを理解する。
www.atmarkit.co.jp/ait/articles/1010/08/news123.html
1ページ何を言ってるのか全然わからん。突っ込みどころが多すぎて、突っ込む気にもならん。
それとも誤字脱字が多いのかな?なんか説明が間違ってるだろ。論理がつながっていない。

うちのばあちゃんにでもわかるように説明してみろや。

{Binding X} という書き方は

143 名前:、{Binding Path=X} と同じ意味である。
藁、「同じ意味である」って、そんなら最初から一つに絞っておけよ。

{Binding Path=X} いらんだろ。
BindingにPath以外のプロパティはないんだろ!! 最初からBindingでいいだろ
パスもプロパティもいらんわ。
[]
[ここ壊れてます]



144 名前:デフォルトの名無しさん [2016/11/10(木) 10:43:36.65 ID:aHkFnxeg.net]
 外部リソースを取り込むには、<ResourceDictionary>要素にSource属性を付ける
<Window.Resources>
<ResourceDictionary Source="Styles.xaml"/>
</Window.Resources>

includeにしろよな。常識だろ。

145 名前:デフォルトの名無しさん [2016/11/10(木) 11:38:19.49 ID:ElAt+S/3.net]
質問です
フォームにプロパティグリッドがあります
プロパティグリッドの中でCtrl+Zを押したときに
普通はプロパティグリッドが持っているアンドゥが呼ばれますが
これをフォームの独自のアンドゥ・メソッドを呼び出すようにしたいのですが、
どうすればいいですか?

146 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 12:03:59.07 ID:dRW/oH8h.net]
>>141
思いつくのは、IMessageFilterを使ってWM_KEYDOWNでCtrl+Z拾ってやることかな
入力中のコントロールをControl.FromHandleで取れたら幸い

147 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 12:19:50.11 ID:CCFq8Qep.net]
>>139
Pathは省略可能ってだけで、他にもプロパティあるし。
自分で張ったリンク先の2ページ目にも書いてあるだろ。

148 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 12:41:10.63 ID:lWSBQV9X.net]
>>116
理解できない自分の頭を呪いな

149 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 12:59:35.96 ID:otGHoxmh.net]
>>142
.NET1.1の頃からそんなのあったのか
まったく知らなかったw

しかし、IMessageFilterっていうかApplication.AddMessageFilterって結構恐ろしい仕組みだなw
NativeWindowの方が安全な気がするんだけど

150 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 13:07:51.76 ID:ElAt+S/3.net]
>>142
IMessageFilterでCtrl+Z拾ってできました
ありがとうございます

151 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 14:50:01.95 ID:zCCtWAZL.net]
>>139
結局、言われた指摘には何も返せず自分が理解できないのに適当に騒いでるだけじゃん
C言語とかやったら配列があればポインタいらないじゃん!とか騒いでそう

省略可能な記述についても、html5とかの仕様を見たらhtmlとかbodyとかのタグいらないじゃん!とか叫びそう
qiita.com/labocho/items/54fd70c73ced35c8ba49

152 名前:デフォルトの名無しさん [2016/11/10(木) 15:34:39.47 ID:aHkFnxeg.net]
グダグダ言わずに、本質はどういうことかを捉えてどう説明できるかが問題やな。
Bindingの本質はというと要するにXamlのText="{Binding pName}" が意味するのは

var bind = new Binding("pName") { Source = per };
  text1.SetBinding(TextBox.TextProperty, bind);

この二つの処理やないか。こいつを省略形で書いてるだけのことやろ。
チュートリアルでちゃんとこう言うように書けよな。そしたら3秒でわかるのに。
原辰。

153 名前:デフォルトの名無しさん [2016/11/10(木) 15:45:02.09 ID:aHkFnxeg.net]
>143
1pが意味不明なので2pは見てなかった。

しかもインテリセンスが糞やからPath以外のプロパティがあるのかないのかわからん。
あくまでも
「BindingのプロパティはPath以外に無い」という前提、仮説の下でケチつけてる
わけであって、それはチャンと明記している。W

一遍にりかいするんは難しい。

OneWay ソースからターゲットへの一方通行の同期になります。
TwoWay ソースとターゲットの双方向の同期になります。
OneWayToSource ターゲットからソースへの一方通行の同期になります。
OneTime ソースからターゲットへ初回の一度だけ同期されます。

モードがあるじゃないか。ならインテリセンス効かせろや。



154 名前:デフォルトの名無しさん [2016/11/10(木) 15:59:51.17 ID:aHkFnxeg.net]
しかしBinding部分は顔だし肝なのにここを
 正確に説明できん
 プロパティのインテリセンスも出せん
とか、要するに自分の頭で考えたものじゃなくて、アッチコッチから借りてきた借り物をくっつけ
て作り上げてるからだろ。ほんとうのところが正確に把握できてないんだよな。

155 名前:デフォルトの名無しさん [2016/11/10(木) 16:05:52.04 ID:aHkFnxeg.net]
内容が変更したときにはどうすんの?
 INotifyPropertyChangedインターフェースを実装
 DependencyPropertyにしてしまう (インスタンスを生成したスレッドのみに限定される)
二つの方法がある。

PropertyChanged(this, new PropertyChangedEventArgs("pName”));
プロパティの変更でこれをやってやればいい。

なんやねん。結局イベント処理は書かなだめやないか? どんだけのメリットがあるか。W

156 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 16:10:01.34 ID:ApowNrKS.net]
ラムダ君
LINQ君
XAML君←new

157 名前:デフォルトの名無しさん [2016/11/10(木) 16:33:44.59 ID:aHkFnxeg.net]
結局普及しないのは、関係者がちゃんと理解できていないのではないかな。
WEBを見たら、いろいろと説明が書いてるがどれも分りにくい。

C#でもVBでも1日も触っていたら、そこそこ使えるようになる。うろ覚えでも
プログラムはできる。
 WPFは説明が中途半端なので肝の部分がはっきりしない。

バインディングするんならイベントもちゃんとバインディングしないとだめだわ。
バインディングを間違っていても反応なしだしな。W エラーすらチェックできてない。
中途半端。

158 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 17:47:19.45 ID:riiUw9jl.net]
>>152 命名のXAML君は、staticおじさんと同じ加齢臭がする

159 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 17:49:55.89 ID:ApowNrKS.net]
ラムダとLINQも新しいことを拒絶するstaticおじさんだろうな

160 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 19:15:21.25 ID:pqjjw4yY.net]
ラムダとLINQの時は使うなとか言っているやつがいたからな
拒絶するのは勝手だがいちいち布教しようとするのはウザイ

161 名前:デフォルトの名無しさん [2016/11/10(木) 19:22:39.57 ID:CGPJd07S.net]
IEでニコ生みたいなストリーミング動画を見る際に、動画データがメモリーに展開する前にデータをリアルタイムでキャプチャするにはどうしたらいいでしょうか?

162 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 19:23:04.26 ID:ApowNrKS.net]
C#のLINQは名前が他の言語と違うから一瞬迷う

163 名前:157 mailto:sage [2016/11/10(木) 19:31:03.19 ID:CGPJd07S.net]
すみません分かりづらかったです。
IEで動画見ながら、IEがダウンロードしてるデータがストリーミング動画かどうかを判断して、動画ならIEの画面に表示される前に手を加えたいんです。



164 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 19:36:34.41 ID:hirKpSKv.net]
ストリーミング中の動画に手を加えられるだけの技能があるのがすごい

165 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 20:17:59.57 ID:13nZCkn2.net]
使う価値があると思えば使えばいい
自分が使うのは無理だ参りましたと思ったら使わなければいい
ただどちらを選択したかは別に他人に伝えなくていい

166 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 22:17:57.52 ID:c1KzPo7d.net]
>>159
現実的な内容じゃない
基本的に無理
プロキシ―作っても動画をいじれる技量が君にあるとは思えない

167 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 23:07:13.32 ID:pEVMYV3p.net]
IEに、そういうプラグインがあるのか、探してみれば?

IEは、オープンソース(OSS)じゃないから、改造するのは難しい。
OSSは、Firefox, Chromium, Safari

Atom, Visual Studio Code, Electron は、Chromiumを使っている

168 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 03:04:38.37 ID:+gNs9Nbk.net]
>>153
君はWPFどころかC#もよく理解できてないみたいだから、C#入門書からスタートするのがおすすめ

169 名前:デフォルトの名無しさん [2016/11/11(金) 04:07:56.66 ID:KgVthd+h.net]
>157
ストリーミングをやるコンポーネントはあるだろ。そのデータ取り込み部分を
バッファリングして中を加工すればいいだけだろ。W
画像認識をするのかな?

170 名前:デフォルトの名無しさん [2016/11/11(金) 07:05:40.26 ID:KgVthd+h.net]
MVVMのICommandの使い方
ICommandを実装する理由はなんだ?
 ttp://www.atmarkit.co.jp/ait/articles/1011/09/news102_3.html
これは読んでいくとよくまとまっているが、これだけでは難しすぎて
何を言ってるんかわからん。まるでMS。

そもそもICommandってなーに?

1. 処理の実行可否を状態として持つ、また状態の変更を通知
2. XAMLからメソッドの呼び出しはコードビハインドしか利用できないが、ICommandはバインドが利用でき別クラス(ViewModel)の処理を呼び出すことができる
中身は
public interface ICommand
{
void Execute(object parameter);
bool CanExecute(object parameter);
event EventHandler CanExecuteChanged;
}

171 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 07:07:03.74 ID:zUQAdwQM.net]
イベントを再定義したかった人生だった(Command辞世の句)

172 名前:デフォルトの名無しさん [2016/11/11(金) 07:08:21.41 ID:KgVthd+h.net]
いい例がある。これならわかる。これを逃してしてしまうと永久にわからないというほどの
優れた例を提示しておく。

優れた例
XAML
<TextBox Text="{Binding Name}"/>
<Button Content="実行" Command="{Binding ExecuteCommand}"/>
<Label Content="{Binding Result}"/>

ViewModel
  public DelegateCommand ExecuteCommand { get; }
public MainWindowViewModel(){
ExecuteCommand = new DelegateCommand(() => Result = "登録OK", CanExecute);
}
private bool CanExecute(){
return !string.IsNullOrWhiteSpace(Name);
}
private string _name;
public string Name{
get { return _name; }
set { if (OnPropertyChanged(ref _name, value)) ExecuteCommand.RaiseCanExecuteChanged();}
}

173 名前:デフォルトの名無しさん [2016/11/11(金) 07:09:49.57 ID:KgVthd+h.net]
肝:DelegateCommandをプロパティとして公開
  コンストラクタの中でインスタンス化

() => Result = "登録OK"
これはなんやねん? このアクションの書き方がわからんなーという人。
ラムダ式、、、初めて聞いた?



174 名前:デフォルトの名無しさん [2016/11/11(金) 07:13:06.18 ID:KgVthd+h.net]
>君はWPFどころかC#もよく理解できてないみたいだから、C#入門書からスタートするのがおすすめ

C#の方が難しいわ。まあでも何とか動かせる。WPFもBindingだけわかったので何とか
使えるレベルにはなったな。

問題はMVVMパターンだな。
MVVMじゃなくてM-VM-VかV-VM-Mでないとだめだよな。VVMMの方がいいと思う。

175 名前:デフォルトの名無しさん [2016/11/11(金) 07:23:51.87 ID:KgVthd+h.net]
WPF攻略方法
1.Bindingの理解
2.「優れた例」でVVMM(またはMVVM)を理解する こっちはまあボチボチでもOK

MSの文書は酷いがIT−PROの文書は体裁としてはよくまとまってはいるが説明が難しい。
 第一に例が悪い。
 第二に例にセンスがない。
 第三に例の説明が下手。
単純化したシンプルな例で示さないと「俺はこんなにすごいんだぞ」みたいな
複雑な例では分からん。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef