2008-10-01から1ヶ月間の記事一覧

Unity を使ってコードで依存性を注入する

C#

はじめに 前回は UnityContainer に登録したインスタンスを取り出すだけだったので、今回は依存性注入の簡単なサンプルを作成してみました。 インタフェースを用意 public interface IAnimal { // 鳴き声を出力する void Cry(); } 鳴き声を出力するメソッド…

UnityContainer に登録したインスタンスを取り出す

C#

はじめに 仕事で Unity を触る機会ができたので、やったことをエントリにしていきます。今回は構成ファイルを使っていません。依存性も注入していません。DI コンテナに登録したインスタンスを取り出すだけの簡単なサンプルです。 まずインタフェースを用意 …

イベントを発生させるメソッドの実装

C#

今まで、イベントを発生させるメソッドを何も考えずに public event EventHandler<HelloEventArgs> Hello; protected virtual void OnHello(HelloEventArgs e) { if (Hello != null) { Hello(this, e); } } と書いていたけど、どうやらこれはマズイみたい。スレッドセーフじ</helloeventargs>…

WPF の Style をコードで設定する

C#

「○○をコードで設定する」シリーズで Style を扱っていなかったので、今更ですがエントリ。例えば TextBox 用の Style は XAML で <Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}"> <Setter Property="Background" Value="Yellow"/> <Setter Property="Foreground" Value="Blue"/> <Setter Property="Width" Value="180"/> </setter></setter></setter>

WPF の添付プロパティをコードで指定する

C#

以前少しだけ触れたけど、ちゃんとしたエントリにしていなかったので書いておきます(自分のためにも)。たとえば Grid の添付プロパティ。 <TextBox x:Name="_textBox" Grid.Row="0" Grid.Column="0" Grid.RowSpan="1" Grid.ColumnSpan="1"/> この XAML は C# のコードで Grid.SetRow(_textBox, 0); Grid.SetColumn(_textBox, 0); Grid.SetRowSpan(_textBox, 1</textbox>…

プログラミング Microsoft .NET Framework

.NET Framework を扱うなら必読だろうと思い購入。プログラミングMS .NET FRAMEWORK 第2版 (マイクロソフト公式解説書)作者: ジェフリーリッチャー,Jeffrey Richter,吉松史彰出版社/メーカー: 日経BP社発売日: 2006/12/09メディア: 単行本購入: 7人 クリック…

WPF の Image に Resources.resx に埋め込んだ画像を表示する

C#

Resource.resx に埋め込んだ画像を Image に表示したくて、ネットで調べてようやく見つけた方法がこちら。 // ここでは ResourceManager を使って画像を取得 Bitmap bitmap = (Bitmap)Properties.Resources.ResourceManager.GetObject("sample"); // 自動で…

Trigger をコードだけで指定してみる

C#

Template と Style をコードで書いたから、今度は Trigger。 // フォーカスがある TextBox の背景色を変更するトリガー Trigger trigger = new Trigger(); trigger.Property = TextBox.IsFocusedProperty; trigger.Value = true; trigger.Setters.Add(new Se…

Template をコードで組み立てる

C#

Template をコードで組み立てるときは、FrameworkElementFactory を使えば良いです。例えば、以前 ListView の多段表示の XAML を書きましたが、その時のテンプレートをコードで書くと次のようになります。 // 伝票種を表示する TextBlock FrameworkElementF…

WPFToolkit の DataGrid

C#

仕事で試す機会があったので。 using System; using System.Collections.Generic; using System.Windows; using System.Windows.Data; using System.Windows.Media; using Microsoft.Windows.Controls; namespace DataGridSample { /// <summary> /// Window1.xaml の</summary>…

WPF で Enter を押したとき次のコントロールにフォーカスを移動する

C#

MoveFocus メソッドを使うのが一番だけど、 ComboBox だと上手く動かない。 でも、どうしてもやりたい場合は comboBox.KeyDown += delegate (object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { KeyEventArgs e1 = new KeyEventArgs( e.KeyboardDe…

MoveFocus の動作がおかしい?

C#

「Enter キーを押したとき次のコントロールへフォーカスを移す」という動作を実現する場合、例えば TextBox なら textBox.KeyDown += delegate (object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { UIElement element = sender as UIElement; if (…

入力された値を検証する

C#

はじめに ValidationRule を自作して、TextBox に入力された値を検証してみました。 ルールを作成 public class SuzukiValidationRule : ValidationRule { public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultu…

画面のほとんどを XAML を記述せずに作成してみた

C#

ここのところ XAML ばかり記述しているので、 気分を変えて全てコードで記述してみました。まず完成した画面から。 そしてソースコードは次の通り。 /// <summary> /// Window1.xaml の相互作用ロジック /// </summary> public partial class Window1 : Window { public Window1…

.NET 用のオープンソースのフレームワーク

C#

フレームワーク設計の勉強のため、.NET 用のオープンソースのフレームワークを探してる最中です。見つけたものは次の通り。 TERASOLNA Seasar.NET Spring.NET blanco Framework Enterprise Library Prism 弁慶フレームワーク 情報を頂いた、非オープンソース…

バインドしたデータを Converter で変換して表示してみる

C#

はじめに 先日のサンプルのままだと、伝票種の列に数値が表示されても何を示しているのか分からないので、Corn Butter Converter を使って変換してから表示するように修正してみました。 Converter を用意 // 伝票種用コンバータ。 // 数値を文字列に変換し…

ListView の列ヘッダのスタイルを変更する

C#

まだまだ ListView を弄ってます。http://d.hatena.ne.jp/griefworker/20081001/1225068669:title-先日は ListView を縞々にしたので、今度は列ヘッダの色も変更してみました。

ListView を縞々にする

C#

はじめに 先日のサンプルを改良し、特定の行の背景色を変更してみました。 StyleSelector を用意 public class ListViewStyleSelector : StyleSelector { public override Style SelectStyle(object item, DependencyObject container) { var slip = (Slip)i…