お久しぶりです。
今回も .NET Framework のお話です。
XAML 系テクノロジを使って UI を作成していると、 INotifyPropertyChanged や INotifyCollectionChanged インターフェイスの実装が重要になってきます。
これらを実装しないと ViewModel から View へ変更の通知ができませんから。
そこで時々、INotifyCollectionChanged を実装した Dictionary が欲しくなるんです。
通常の Collection であれば、 System.Collections.ObjectModel.ObservableColleciotn<T> というクラスが用意されているのですが、
残念ながら ObservableDictionary<TKey, TValue> なんてクラスは用意されていません。。
狭く浅いプログラマーのブログ
狭い視野と浅い知識でいろいろ書いて行きます。
2013年1月8日火曜日
2012年8月5日日曜日
XAMLを使っていて気づいたこと
全くBazaarの記事を更新していないのですが。
久々の記事で、XAMLの話題です。
よく見かけるこんなソース
実はこういう書き方もできるみたいです。
"{}"を使った構文は短縮形だったんですねぇ!
MSDN - マークアップ拡張機能と XAML
http://msdn.microsoft.com/ja-jp/library/ms747254(v=vs.80).aspx
BindingやStaticResource、x:Type、x:Static などはこうの仕組みを使っているんですね。
ちなみに、自分でマークアプ拡張を定義することもできるそうです。
かずきのBlog - [C#][WPF]マークアップ拡張の作り方
http://blogs.wankuma.com/kazuki/archive/2008/03/30/130476.aspx
久々の記事で、XAMLの話題です。
よく見かけるこんなソース
<Grid> <TextBlock Text="{Binding Hoge, Mode=OneWay}" /> </Grid>なんの疑問もなく使っていて、こういう構文なんだなあと思っていたのですが、
実はこういう書き方もできるみたいです。
<Grid> <TextBlock> <TextBlock.Text> <Binding Path="Hoge" Mode="OneWay" /> </TextBlock.Text> </TextBlock> </Grid>
"{}"を使った構文は短縮形だったんですねぇ!
追記 2012/08/14
これ、マークアップ拡張(Markup extensions)って言うんですね。MSDN - マークアップ拡張機能と XAML
http://msdn.microsoft.com/ja-jp/library/ms747254(v=vs.80).aspx
BindingやStaticResource、x:Type、x:Static などはこうの仕組みを使っているんですね。
ちなみに、自分でマークアプ拡張を定義することもできるそうです。
かずきのBlog - [C#][WPF]マークアップ拡張の作り方
http://blogs.wankuma.com/kazuki/archive/2008/03/30/130476.aspx
2012年3月21日水曜日
Bazaarで分散バージョン管理(作業編その2)
Bazaarで分散バージョン管理(作業編その1)からの続き
作業でよく使用するものを説明していきます。
●元に戻す
間違ってファイルを削除したり、コーディングに失敗した時などに元に戻せるのが
バージョン管理のいいところですね。
削除した main.c と、変更を加えた Makefile をコミット時のものに戻します。
BazaarExplorer で確認すると、 main.c の状態が「紛失」になっています。
右クリックメニューから 変更の取り消し をクリックします。
すると以下のウィンドウが表示されます。
元に戻したい項目にチェックを入れて OK をクリックします。
変更を加えたファイルに未練がない場合は、「revertされるファイルのバックアップを作らない」を
ON にしておくと後で削除する手間が省けます。
2012年2月1日水曜日
Bazaarで分散バージョン管理(作業編その1)
Bazaarで分散バージョン管理(チェックアウト編)からの続き
いよいよ実作業に入っていきます。
作業ツリーは前回チェックアウトしたものを使用していきます。
●変更&追加&差分表示
まずは main.c にちょっと処理を追加し、Makefile も作成しました。
Makefile は初コミットした時と同じ手順で 追加 を行います。
この状態で main.c には !アイコン、Makefileには +アイコンが表示されます。
右クリックメニューから 差分 を選択しましょう。
すると差分ビューが表示されます。
追加された Makefile の全文と、main.c の変更点の周辺のみが表示されています。
また、Makefile 内の日本語文字列が文字化けを起こしています。
そこで、下のエンコード設定を変更して日本語を表示できるようにしましょう。
この場合、日本語は Shift-JIS で書いているので、 shift-jis を選択します。
コメントが正しく表示されました。
※ プロジェクト全体で文字コードは統一しておきましょう
また、ファイルの内容をすべて表示したいときは「すべて」をチェックしましょう。
ファイルの内容がしょぼいので見た目が大して変わりませんが(笑)
さて、この内容で問題なければコミットしましょう。
「バージョン管理下にないファイルを表示」を ON にしておくと、ファイルの追加漏れに気づきやすくなるのでお勧めです。
main.o はオブジェクトファイルなのでコミットする必要はないです。
コミットを実行すると、以下のようにアイコンが変わります。
2012年1月23日月曜日
Bazaarで分散バージョン管理(チェックアウト編)
Bazaarで分散バージョン管理(共有リポジトリ作成編)からの続き
今度は前回作った共有リポジトリから作業ツリーを取り出しましょう。
適当な空フォルダを用意します。
ここでは bzrworkspace2 というフォルダを用意しました。
まず、フォルダ内のなにもないところで右クリックし、
「Tortoise Bazaar」>「チェックアウト/ブランチ」を選択します。
表示されたウィンドウで「ブランチ元」に共有リポジトリへのパス( "\turnk" を含む)を入力します。
また、「作業ツリーを作成するローカルディレクトリ」にはエクスプローラで開いていたフォルダのパス + "trunk" が表示されているはずです。
これは、「ブランチ元」のパスの末尾のフォルダ名を勝手に付け加えてくれる謎のおせっかい機能の仕業です。
余計なフォルダを作成したくなければパスを修正して構いません。
※ちなみにバージョン 2.4.x 以降ではこのおせっかい機能はなくなりました!
そして、「チェックアウトを作成」がONであることを確認します。
「軽量チェックアウト」はOFFにしておきましょう。(説明は下の方で)
最後に、「OK」を押せば完了です。
新しい作業ツリーに ".bzr" フォルダと define.h、main.c が出現しました。
※ 共有リポジトリ作成編では「作業ツリーと共有リポジトリの結びつけ」を行いましたが、
今度は前回作った共有リポジトリから作業ツリーを取り出しましょう。
●チェックアウト
適当な空フォルダを用意します。
ここでは bzrworkspace2 というフォルダを用意しました。
まず、フォルダ内のなにもないところで右クリックし、
「Tortoise Bazaar」>「チェックアウト/ブランチ」を選択します。
表示されたウィンドウで「ブランチ元」に共有リポジトリへのパス( "\turnk" を含む)を入力します。
また、「作業ツリーを作成するローカルディレクトリ」にはエクスプローラで開いていたフォルダのパス + "trunk" が表示されているはずです。
これは、「ブランチ元」のパスの末尾のフォルダ名を勝手に付け加えてくれる謎のおせっかい機能の仕業です。
余計なフォルダを作成したくなければパスを修正して構いません。
※ちなみにバージョン 2.4.x 以降ではこのおせっかい機能はなくなりました!
そして、「チェックアウトを作成」がONであることを確認します。
「軽量チェックアウト」はOFFにしておきましょう。(説明は下の方で)
最後に、「OK」を押せば完了です。
新しい作業ツリーに ".bzr" フォルダと define.h、main.c が出現しました。
※ 共有リポジトリ作成編では「作業ツリーと共有リポジトリの結びつけ」を行いましたが、
チェックアウトの場合は自動でこれを行なってくれます。
2012年1月18日水曜日
Bazaarで分散バージョン管理(共有リポジトリ作成編)
Bazaarで分散バージョン管理(作業ツリー作成編)からの続き
前回作成した作業ツリー(リポジトリ)をチームで共有できるように、
Subversion のような共有リポジトリを作成していきます。
Subversion のような共有リポジトリを作成していきます。
※ 本来はHTTPサーバ等の上に作成させたほうがいいと思いますが、
(やったことが無いので)ここではファイルサーバー等の上に作成していきます。
●リポジトリ初期化
ファイルサーバーまたはDropbox等、チームで共有できる場所に空のフォルダを用意します。
ここでは bzrrepository というフォルダを用意しました。
まず、フォルダ内のなにもないところで右クリックし、「Tortoise Bazaar」>「初期化」を選択します。
表示されたウィンドウで「新規共有リポジトリを作成」をONし、
「リポジトリ内に作業ツリーを作成しない」をONして「OK」を押します。
すると、フォルダの直下に ".bzr" という隠しフォルダが出現します。
隠しフォルダなのでエクスプローラの設定を変えないと見れません。
.bzr フォルダの中身は絶対に変更しないでください。
このあたりは作業ツリーの作成と殆ど同じですね。
2012年1月9日月曜日
Bazaarで分散バージョン管理(作業ツリー作成編)
Bazaarで分散バージョン管理(設定編)からの続き
Bazaarを使ってゼロから作業ツリー(リポジトリ)を作成していきます。
●リポジトリ初期化
以下のような main.c と define.h ファイルを含む bzrworkspace フォルダをBazaarで管理できるようにしていきます。
まず、フォルダ内のなにもないところで右クリックし、「Tortoise Bazaar」>「初期化」を選択します。
表示されたウィンドウで「新たな単体ツリーを作成」がONになっていることを確認して「OK」を押します。
(「履歴中のすべてのリビジョンNoを保持する」は使ったことが無いのでよくわかりません)
すると、フォルダの直下に ".bzr" という隠しフォルダが出現します。
これが作業ツリーのリポジトリの正体です。
隠しフォルダなのでエクスプローラの設定を変えないと見れません。
.bzr フォルダの中身は絶対に変更しないでください。
登録:
投稿 (Atom)