構成マネージャが起動しない
こんにちは、naginoです。
SQL Server 2005 で以下のエラーが出て構成マネージャが起動しないサーバがありました。
WMI プロバイダに接続できません。 アクセス許可がないか、サーバーに到達できないするには。 のみ管理できます SQL Server 2005 および以降のサーバーで SQL Server 構成マネージャを確認します。
無効な名前空間 [0x8004100e]
エラー番号などで検索すると、以下が Hit しますが、SQL Server 2008 となっています。
http://support.microsoft.com/kb/956013/ja
そこで、回避策にあるコマンドを 2005 にあわせてアレンジして実行したところ、無事起動するようになりました。
ちなみにコマンドは以下の通りです。
mofcomp "C:\Program Files\Microsoft SQL Server\90\Shared\sqlmgmproviderxpsp2up.mof"
(環境変数を使っていないのは手抜き・・・)
一応公式情報ではありませんが、エラーの原因や状況からたぶん大丈夫でしょう(いい加減・・・)。
もしこの情報を利用される際は、自己責任でお願いします。
カスタム DataTemplateSelector 2
こんにちは、nagino です。
また嵌りました。
カスタムな DataTemplateSelector を使うとき、Window.Resources などで x:Key によってリソース名を定義しますが、その名前を使って、且つコンパイルも通るのに期待通り動かず、嵌りました。
<my:DataGridTemplateColumn Header="ヘッダー" SortMemberPath="バインド列名" CellTemplateSelector="{StaticResource 定義したリソース名}">
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
...(使わなくなった DataTemplate)
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
赤字の部分が不要なのですが、これが残っていると赤字の方が優先されるようで、カスタムな DataTemplateSelector が全く動作しませんでした。
うーん、このあたりの感覚が分からないと、いらんところで時間をロスしますね。
カスタム DataTemplateSelector
こんにちは、nagino です。
DataTemplateSelector を継承した「カスタム DataTemplateSelector」(という呼び方が正しいのかは分かりませんがそのようなもの)を作成していて、嵌りました。
http://msdn.microsoft.com/ja-jp/library/ms742521.aspx
こちらを参考にしていたのですが、複数のウィンドウで構成されるアプリケーションの場合は
> Window window = Application.Current.MainWindow;Window window = Application.Current.MainWindow;
> return window.FindResource("importantTaskTemplate") as DataTemplate;
で取得している window が必ずしもリソースを定義している Window とは限らないのですね。
で、おそらく正しくは
> return ((FrameworkElement)container).FindResource("importantTaskTemplate") as DataTemplate;
で直接取得すると間違いがありません。
細かいのですが、こういうところで嵌るとタイムロスが痛いです。
DataGrid ヘッダ行のデザイン変更
こんにちは、nagino です。
すっかり WPF な nagino です。
SQL Server は WPF なクライアントで必要な SQL を書く程度で、ほとんど触っていません・・・。
で、今日は DataGrid のヘッダ行のデザインを変えます。
<Window xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit " ...>
<Window.Resources>
<LinearGradientBrush x:Key="DataGrid_Style_Header1" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#826496" Offset="0.0" />
<GradientStop Color="#B2A0BF" Offset="1" />
</LinearGradientBrush>
...
</Window.Resources>
...
<my:DataGrid ColumnHeaderStyle="{StaticResource ColumnHeaderStyle1}" ...>
...
</my:DataGrid>
...
</Window>
リソースでブラシを定義しておき、それを DataGrid の ColumnHeaderStyle に設定します。
設定する場合は、ここでは x:Key で一意な名前を定義し、それを StaticResource で指定しています。
これは王道どおりだと思うので、そんなに難しくは無かったかも。
まあ、エンドユーザー向けなのでこういうデザインを日々ちまちまと作りこんでいます、はい。
インデントするのがエラい面倒&記事入力画面のビューを切り替えると消えるので、今日はインデント無しです・・・。
LinkButton / HyperLink なボタン
こんにちは、nagino です。
WPF では LinkButton や HyperLink がありません。
Windows Form のものを流用する、ボタンのスタイルなどを変更する、という方法もありますが、もっと簡単にできました。
<TextBlock>
<Hyperlink>
問い合わせ
</Hyperlink>
</TextBlock>
うーん、これだけでできてしまうのですね。
あとは Click イベントを拾うことで処理できます。
表示する文字を変えたい場合は以下のようにすることでできます。
<TextBlock>
<Hyperlink>
<TextBlock Text="{Binding SOMETHING}" />
</Hyperlink>
</TextBlock>
うーん、TextBlock が大活躍です。
WPF を知っている人にとっては初歩の初歩なのでしょうが、色々と ASP.NET や Windows Form との違いが多く戸惑うことが多いです。