野良エンジニアの足跡 -14ページ目

構成マネージャが起動しない

こんにちは、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 との違いが多く戸惑うことが多いです。