20

これは秘密ではありません。Silverlight のDataGrid既定のスタイルは美しいですが、WPF のスタイルは貧弱です。

車輪を再発明する代わりに、WPF で使用するために SL スタイルをコピーした人がいるかどうかコミュニティに尋ねさせてください。

スクリーンショットを見て、Silverlight および WPF チームが製品にどのように投資しているかをご自身で判断してください。

Silverlight の既定のスタイルの DataGrid:

Silverlight データグリッド

WPFのデフォルトスタイルのDataGrid(Saied Kの回答後に更新):
WPF データグリッド

4

5 に答える 5

7

動作するSilverlightスタイルのプロジェクトが見つからなかったDataGridため、Codeplexで作成しました。

http://datagridthemesfromsl.codeplex.com

すべてのテーマがあるわけではありませんが、少なくともいくつかあります。

于 2010-11-24T17:45:53.233 に答える
7

MSDN の奥深くに埋もれて、私はこれを見つけまし

記事の下部に向かって、次のフレーズが表示されます。

たとえば、ControlTemplates サンプルを使用したスタイリングの一部を示す次の図を見てください。

「ControlTemplates サンプルによるスタイリング」をクリックすると、ダウンロード リンクに移動します。ダウンロード後、プロジェクトをコンパイルすると、とらえどころのないデータグリッド スタイルを含む、あらゆる種類のスタイルが含まれます。MS の DataGrid.xaml ファイルを取得して、必要に応じて変更できます。

于 2011-01-19T04:04:02.173 に答える
6

独創的なスタイルはないようです。
Microsoft の提案サイトに提案を投稿しました。ここここに投票してください!!!

Silverlight DataGrid の既定のスタイルを WPF に模倣したことがある方は、回答を投稿してください。私はそれを回答としてマークし、投票します!

どうもありがとう!

于 2009-12-27T02:36:19.177 に答える
2

WPF には、Luna、Aero、Classic などの多数のスタイルが付属しています。これらのテーマは、システム設定に基づいて適用されます。前回の投稿のスクリーンショットは WPF クラシック テーマのように見えますが、もっと魅力的なテーマを探しているのではないでしょうか。

OS でクラシック システム テーマを使用しているが、たとえば、WPF アプリケーションで Aero テーマを使用したい場合は、マージされた辞書をアプリに追加して、以下に示すように Aero テーマを強制することができます。それに応じて、バイナリ バージョンと公開鍵を変更する必要がある場合があることに注意してください。

<Application.Resources>
   <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
         <ResourceDictionary
             Source="/PresentationFramework.Aero;V4.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml"/>
      </ResourceDictionary.MergedDictionaries>
   </ResourceDictionary>
</Application.Resources>

お役に立てば幸いです、Saied K.

于 2009-12-28T21:02:35.617 に答える
0

私は両方の接続サイトのバグにも投票しました。これは実際にはデフォルトでシステムテーマに正しく従う必要があります。

ただし、その間に、WPFToolkitでAeroテーマのコントロールを有効にするために使用できる次の例を含むMalavDhalgaraによる有用な投稿を見つけました。Shimmyがこの質問を投稿した日付から、この例は.NET 4.0のDataGridからのものではないと仮定しますが、私は間違っている可能性があり、ベータ版またはRCのいずれかからのものである可能性があります。とにかく、ここにWPFToolkitを使用している人のための1つの回避策の例があります。

        <ResourceDictionary >
            <ResourceDictionary.MergedDictionaries>

                <!--Enable Aero Theme-->
                <ResourceDictionary source="/PresentationFramework.Aero,Version=3.0.0.0,Culture=neutral,
                                             PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=MSIL;
                                             component/themes/aero.normalcolor.xaml" />

                <ResourceDictionary xmlns:tk="clr-namespace:Microsoft.Windows.Controls;assembly=WpfToolkit"
                                             xmlns:sys="clr-namespace:System;assembly=mscorlib">

                    <!--Enable aero theme on toolkit components-->
                    <sys:String x:Key="{ComponentResourceKey 
                                                 TypeInTargetAssembly={x:Type tk:Calendar},ResourceId=Theme}">
                                                 Aero.NormalColor</sys:String>

                    <sys:String x:Key="{ComponentResourceKey
                                                 TypeInTargetAssembly={x:Type tk:DataGrid},ResourceId=Theme}">
                                                 Aero.NormalColor</sys:String>

                    <sys:String x:Key="{ComponentResourceKey
                                                 TypeInTargetAssembly={x:Type tk:DatePicker},ResourceId=Theme}">
                                                 Aero.NormalColor</sys:String>

               </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
于 2010-06-06T07:43:13.713 に答える