2008-01-01から1年間の記事一覧

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…

ListView で多段表示

C#

はじめに WPF の ListView に挑戦しました。今回は ListView を1行2段で表示するのが目標。 ListView に表示するデータを用意 // 伝票を表すクラス public class Slip { public DateTime Date { get; set; } public int Kind { get; set; } public int NoFla…

ツールバーボタンに画像とテキストを表示する

C#

<Window x:Class="ButtonSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <DockPanel LastChildFill="False"> <StackPanel DockPanel.Dock="Top"> <Button> くるっく…</button></stackpanel></dockpanel></window>

WPF の Command に引き続き挑戦

C#

先日のサンプルを、XAML で CommandBinding を設定するように修正してみた

WPF の Command に挑戦

C#

はじめに 先日 DataBinding を使ってウィンドウにデータを表示したので、今回は Command を使ってボタンを押した時のアクションを追加してみます。 RoutedCommand を使う public partial class EditDialog : Window { // ファイル選択ダイアログを表示するコ…

DataBinding でコントロールに値を表示

C#

はじめに DataBinding でウィンドウ上のコントロールに値を表示してみます。 バインドするクラスの作成 プロパティが変更されたことが通知されるように、INotifyPropertyChanged インタフェースを実装しました。 public class Item : INotifyPropertyChanged…

WPF の ControlTemplate に挑戦

C#

はじめに ControlTemplate を使って、マウスカーソルがボタンの上にあるときと、押したときに背景色が変わる簡単なボタン用テンプレートを作成します。書籍とかずきさんのブログを参考に作成。 XAML

A4一枚勉強法

はじめに この本で紹介されているA4シートが欲しくて購入。効率よく夢をかなえる A4一枚勉強法作者: 三木雄信出版社/メーカー: 日本実業出版社発売日: 2008/04/17メディア: 単行本(ソフトカバー)購入: 2人 クリック: 17回この商品を含むブログ (3件) を見…

WPF のリッチテキストを試す

C#

<Window x:Class="RechTextSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF でリッチテキストを使ってみた" Height="300" Width="300"> <FlowDocumentReader> <FlowDocument> <Paragraph> 今回は気分を変えて…</paragraph></flowdocument></flowdocumentreader></window>

WPF の Style に挑戦

C#

はじめに 先日 WPF で初めてまとも(?)に作成したウィンドウを、スタイルでちょっぴり見栄え良くしてみます。 修正したXAMLを晒します <Window x:Class="WpfSample.EditDialog" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="EditDialog" Height="400" Width="400" Background="#303030"> </window>

WPF のレイアウトパネルを使ってみた

C#

本格的に WPF に挑戦! Tech-Ed に行ってから、無性に WPF が触りたくなりました。教科書を適当に見繕って、れっつ・ちゃれんじ。 まずは実行画面 最初に結果をお見せします。PC にインストールしているランチャの設定画面をモデルにしました。 XAML を晒す …

WCF サービスを JSON に対応させる

C#

はじめに 先日の REST のサンプルを JSON に対応させます。 JSON 対応は簡単 サービスコントラクトを修正。WebGet 属性に注目! [ServiceContract] public interface IProductService { [OperationContract] [WebGet(UriTemplate = "/product/{id}/", Respon…

ThreadPool の最大数を変更する

C#

メモも兼ねて。下のコードで変更可能です。 System.Thrading.ThreadPool.SetMaxThreads( // 新しいワーカースレッドの最大数を指定 newWorkerThreads, // 新しい非同期 I/O スレッドの最大数を指定 newCompletitionPortThreads );

WPF アプリケーションで最初に表示されるウィンドウを変更する

C#

Visual Studio のテンプレートで「WPF アプリケーション」を選択すると作成される App.xaml を開いて、StartupUri を変更すればOK。 <Application x:Class="Sample.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="SampleWindow.xaml"> </application>