2014年09月02日

Bindの順番

WPFでしか確認していなのでカテゴリはWPFですがXAMLのお話。
いつも以上に裏を取っていないのではじめにあやまっておきます、ごめんなさい。
あとコードの埋め込みも面倒なのでスクリーンショットです。最後にプロジェクト一式置いておきます。ごめんなさい。

一つのコントロールの複数のプロパティにデータバインドしている時、どのプロパティからバインドされていくのか、が気になりました。

ということで、DependencyPropertyを二つ持つユーザーコントロールをつくって
Binding1.PNG
Binding2.PNG
プロパティを表示。


データクラスはプロパティが参照された順番を返すようにしておきます。
Binding3.PNG


あとはこんな感じで表示。
Binding4.PNG

リストボックスで選択したデータを表示するようにして、
Row="1"のユーザーコントロールは、Property1=〜,Property2=〜の順に記述。
Row="2"のユーザーコントロールは、Property2=〜,Property1=〜の順に記述。

これを実行すると
Binding5.PNG

こうなります。
もうちょっと見やすく作ればよかったんですが、Row="1"のユーザーコントロールの場合はProperty1,Property2の順にデータのプロパティを参照していますが、Row=”2"のユーザーコントロールはProperty2,Property1の順に参照しています。


ちなみに
Binding6.PNG

こんな感じにRow=”2”を先に書いておくと
Binding7.PNG

Row=”2”のユーザーコントロールからデータのプロパティを参照します。



結論
XAMLに書いた順でプロパティに設定していく(多分)

少し検索してみましたが該当するような説明は私には見つけられなかったので"多分"です。


あまりこういう機会はないと思いますが、SliderのValueとMaximumを両方バインドしたらValueが変わっちゃった、なんてこともあるかもないかも。


プロジェクトはこちら
BindingTest.zip
posted by ぷにお at 13:07 | Comment(0) | TrackBack(0) | WPF | このブログの読者になる | 更新情報をチェックする

2013年08月26日

WPFアプリの二重起動防止ではまったこと

メモです。

既に起動しているかどうか、は今回は無視。(私はMutex使ってます)
問題はこの処理をどこに入れるか、ということ。

もともとFormsでやっていた処理(すでにMutexがあったら起動しない)ってのをどこに入れるのかですが、
なんとなく調べると結構な確立で「Application_Startup」が出てきます。
はい、私もそこに入れていました。


private void Application_Startup(object sender, StartupEventArgs e) {
  if (起動してたら) this.Shutdown();
}


こんな感じですね。
私のイメージでは、このイベント抜けたら(this.Shutdown()呼んだら)後は何も動かないで終わるよー、だったんですが実際には違っていてMainWindow(StartupUriに指定しているやつね)のコンストラクタは呼ばれるんですよね。
なのでMainWindowのコンストラクタでいろいろやっちゃうと悲しいことになります。

この場合はアプリケーションクラス(デフォルトではAppですね)のコンストラクタに処理を書くといい感じになります。


public App() {
  if (起動してたら) this.Shutdown();
}


なんでそーなのかとか、上の例が正しいのかとか、そーいうのは調べてませんのですごめんなさい。
(Startupとウィンドウインスタンスの生成は同じところでやっているのかな?)
posted by ぷにお at 16:13 | Comment(0) | WPF | このブログの読者になる | 更新情報をチェックする

2012年11月29日

ソーシャルエロ動画ダウンローディングツールを真似してみた

ソーシャルエロ動画ダウンローディングツール “xxxdl” の windows 版を公開しました(http://parosky.net/wordpress/?p=759)

っていうやつの存在を昨日知りまして、裸で正座しながらアプリ起動しましたよ。
そしたら失敗です。何度やっても失敗です。
私はいつまで正座していればいいんですか?(ノД`)

ということで、足がしびれる前にWPFで作ることにしました。
元ページの作者の方(ぱろすけさん?)は親切なことにPythonのソースも公開してくれてたので、ソース見ながらググってコピペ。Pythonって初めて見たけどあんな感じなんですね。
んでんで、こんなのができました。
HatenaDownload.PNG


起動してDownloadボタンを押すとはてブからXVideosのランキングを拾って、対象の動画を順番に落としていきます。XVideoってのは海外のエロ動画サイトです。(・ω・)
URLはこちら(http://www.xvideos.com)良い子は見ないように。


処理は簡単で、はてブのページを落として来たらスクレイピング、対象URL拾ったらそのページのデータをテキスト検索。
スクレイピングは@neueccさん(http://neue.cc/)のところがわかりやすくて楽ちんなのでコピペ。
したんですが、SGMLReaderがnugetで取れるやつ(1.8.9)だと例外吐いて終わってしまうんですよ。
1.8.8だと問題ないらしいのでgithubからソースもってきて自分でビルド。

超適当アプリの出来上がり〜。ヽ(´∀`)ノ

マジでこんな感じ。

実行ファイルはこちら。bin.zip
ソースがこちら。Source.zip

async/awaitを使ってみたかったので.Net 4.5を使ってます。

そしてここからが本題です。
超適当アプリなんで、このソースを使ってもっとすごいツールをだれか作ってくださいお願いしまs。
posted by ぷにお at 20:37 | Comment(0) | WPF | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。