.net Core 3.1 は まだ早かったのかな…

.net Core 3.1 でシステムを作っているけど、かゆい所に手が届かないというかなんというか…

今回はDataGrid のお話
リソースデータから項目名を表示するのにやり方が2種類あります。
1.{DynamicResource XXXXXXXXXX}
2.{StaticResource XXXXXXXXXX}


1.のDynamicResource はリソースファイル内の値を変更したら画面に反映されます。
また、Windowのタイトルを表示する場合は、Dynamicじゃないとエラーが出ます。
(Title="{StaticResource XXXXXXXXXX}" にするとビルドエラーで実行できません)
ついでに起動時ちょっと早いらしい(必要な時にresource参照するから)

2.のStaticResource は リソースファイル内の値を変更しても画面に反映されません。
また、DataGridTextColumnタグのHeader (グリッドのヘッダタイトル) は static じゃないと表示されません。
ついでに起動時ちょっと遅いらしい(起動時にresource参照するから)

というわけで、全部統一させろよ!
一部はDynamic、一部はStatic って、処理共通化できないし、 改修や引き継いだ後の不具合の元だ!
メンテナンスがやりづら過ぎて話にならない…

ドキュメントファーストの日本企業(うちの会社だけ?)には合わないよなぁ…
アジャイルやコードファーストやってたのになぁ…


サンプルコード:
Windowのタイトル
mc:Ignorable="d" Title="{DynamicResource XXXX}" Height="600" 

resource宣言:
<Window.Resources>
    <ResourceDictionary Source="/Properties/MainWindow.xaml"/>
</Window.Resources>

DataGridのヘッダタイトル表示
<DataGrid.Columns>
    <DataGridTextColumn Header="{StaticResource XXXX}" Width="50" Binding="{Binding Name}">
        <DataGridTextColumn.ElementStyle>
            <Style TargetType="TextBlock">
                <Setter Property="HorizontalAlignment" Value="Center"/>
            </Style>
        </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>
</DataGrid.Columns>

コメント

このブログの人気の投稿

ヨドバシカメラの店舗購入履歴を見るには…

C# の WPF の DataGrid で 行を交互に背景色を変える+選択色を変える+カラムが無い所も変える…

Visual Studio の ホットリロードが動かない場合に確認するところ