開発備忘録

WPF(Xaml + C#)の話題を中心に.Net関連についてのブログです。

WPF

MediaPlayer でファイル再生時のエラー回避方法について

またもやWPF のMediaPlayer ネタです。 MediaPlayer のイベントにMediaFailed がありますが、このイベントで以下のようなメッセージが出力される場合があります。 HRESULT からの例外:0xC00D11BA これはWindows Media Player が出力している例外メッセージで…

MediaPlayer でファイル再生時のノイズ発生回避方法について

前回同様、WPF のMediaPlayer のお話です。 iyemon018.hatenablog.com今回は楽曲ファイルの読み込み時ではなく、再生時に発生するノイズについてです。 このノイズも必ず発生するものではなく、特定の条件の楽曲ファイルと環境が揃わなければ発生しません。 …

MediaPlayer でファイルオープン時のノイズ発生回避方法について

WPF でWAVE ファイルなどのメディアファイルを再生するとき、System.Windows.Media.MediaPlayer を使用していたのですが、複数ファイルを纏めてオープンしたときに何故か楽曲が少しだけ再生される現象が発生しました。 ここではその回避方法についてまとめて…

WPF でVisualTree のヒット テストを実行する

VisualTreeHelper を使用すると特定のコントロールのVisualTree 要素を検索したりできることは知っていたのですが、今まで使用する機会は殆どありませんでした。 今回使用したときに躓いた箇所も含めて、その使用方法をメモします。以下、動作環境です。 OS …

ViewModelのプロパティ変更をトリガーにアニメーションする方法

WPF でViewModel のプロパティが変更されたときにStoryboard を開始する方法で少し躓いたのでメモ。 開発環境は以下の通り。 OS : Windows 10 64bit .NET Framework : 4.6 Visual Studio : 2017 GUIアーキテクチャ : WPF ViewModel のプロパティの変更をトリ…

(WPF) ウィンドウのバウンド エフェクトを無効化する方法

Windows10 でスクロールバーが表示されたListBox をタッチ操作したときにバウンドするようなUI 表現を無効化する方法についてメモします。タブレットでWindows10 を使用している際に、エクスプローラーなどで一覧表示している際に、領域外までスクロールする…

Windows10 + WPF でタッチ フィードバックを無効化する(※)

Windows10 上のWPF アプリケーションでタッチ フィードバックを無効化する方法にいてメモ※まず最初に、この記事で紹介する方法はあるパターン(後述)に対応できていません。 そのパターンでの対応方法が見つかれば追記 or あらたに記事を書きます。 タッチ …

WPFでCarouselPanelを作る

前回、PathListBoxを使って遊んでみましたが、今回もPathListBoxを使ってみます。 iyemon018.hatenablog.comカルーセルパネル(Carousel Panel)は、左右にコンテンツをスライドするあれです。 まずはサンプルプログラムの動作を見てみます。このように複数の…

WPFでPathListBoxを使う

WPFのコントロールにPathListBoxというものがあります。 これは、通常のItemsControlとは少し異なる動作をします。 百聞は一見にしかず、まずは以下のイメージを御覧ください。単純な動作ではありますが他のList系コントロールとは明らかに動作が異なります…

Staticなフィールドをバインドするには

WPF

WPFではViewのDataContextからプロパティをバインドしてデータの入出力ができますが、 staticフィールドのバインドも可能になっています。例えば、DateTime.Todayをバインドする場合は次のようになります。 <TextBlock Text="{Binding Source={x:Static system:DateTime.Today}, Mode=OneWay, StringFormat={}{0:yyyy/MM/dd(dddd)}, ConverterCulture=ja}" /> Binding Source= の部分をx:Static system:DateTi…</textblock>

OnRenderで再描画されない現象と対策

WPF

ハマったのでメモWPFアプリケーションであるコントロールをXamlではなくOnRenderメソッドをオーバーライドして自前で描画処理を実装していました。 ビルド、実行して問題なく動いていましたが、あることをするとOnRenderメソッドが呼ばれないことが発覚しま…

TimeSpan型のStringFormatの設定

WPF

WPF でTimeSpan 型のプロパティをバインドした際のStringFormat を忘れてハマったのでメモ。 DateTime 型と表記が異なる上にバインドの設定ウィンドウに出てこないので割と忘れます。 <TextBlock Text="{Binding TimeSpan, StringFormat={}{0:hh\\:mm\\:ss\\.fff}, ConverterCulture=ja-jP}" /> コロンなどの記号の前に'\'を2個入れましょう。ついでなのでDateTime </textblock>…

WPFパフォーマンス改善その2.アニメーションのパフォーマンス改善策

WPF

ここではWPF のアニメーションの動作改善策について記述します。WPF のアニメーションは簡単に作成できる反面、最適化を実施しない場合だと無制限にCPU/GPU パワーを使用し続けます。 アニメーションにリソースを割かれると、それにともなって他のユーザー…

WPFパフォーマンス改善その1. 初期表示(描画)速度の改善策

WPF

初期表示(描画)速度の改善策 ここでは初期表示、つまり画面をインスタンス化してから描画されるまでの時間を短縮するための改善策や 画面の再描画処理時間の短縮方法を記述します。

WPFパフォーマンスの調整について

WPF

先日、仕事でWPF のパフォーマンス調整をしました。 その際に参考になった記事や対策をまとめました。 ここでは、WPFのパフォーマンス改善のためのガイドラインやTipsなどを記述します。 WPFの動作が遅くなる理由は多岐にわたり、かつ複合的な要因がある場合…

StoryboardのStopに失敗する場合の対処法

WPF

WPFでStoryboardをコードビハインドで終了させる際に、詰まったポイントをメモメモ private void StartButton_Click(object sender, EventArgs e) { // storyboard には既にリソース上のStoryboard を設定しているものとする。 storyboard.Start(Ellipse1); …

ComboBoxの使い方

WPFを知らない人からComboBoxの使い方が分からない、とよく言われます。 WindowsFormからやってきた人にとってはComboBoxは序盤のハードルとなるのでは無いでしょうか? かくいう私もそうでした。 しかし、毎度毎度口頭で説明したりサンプルを作るのも面倒な…

WindowChromeの問題点

WPF

前回WindowChromeで独自ウィンドウを作成しましたが、今回はWindowChromeを使用したうえでの問題点を見ていきます。 1.最大化した時にデスクトップのクライアント領域を超える。 通常、ウィンドウを最大化した場合、デスクトップのクライアント領域を超え…

WindowChromeを使用した独自ウィンドウの作成

WPF

WPFでウィンドウを独自に作成したい場合は、自分でWindowのControlTemplateをゴリゴリ作るのも楽しいのですが、もう少し簡単に実現したい時、WindowChromeを使用するといいと思います。 WindowChromeとは? WindowChromeは、Windowの非クライアント領域にWin…