1. ホーム
  2. wpf

[解決済み] WPFでデザインタイムデータをダミー化するには、どのような方法がありますか?

2022-12-12 08:45:45

質問

私は式ブレンドを使わずに、vs2010 の XAML エディターだけを使用して作業しています。この知恵はさておき、私はデザイン時のデータ バインディングの必要性をますます感じています。単純なケースであれば FallbackValue プロパティは非常にうまく機能します(Textboxes と TextBlockes など)。しかし、特に ItemsControl などを扱う場合は、実行ファイルを実行しなくてもコントロールとデータ テンプレートを調整および微調整できるように、デザイナーに表示されるサンプル データが本当に必要です。

私が知っているのは ObjectDataProvider は型へのバインディングを可能にするため、視覚化のための設計時のデータを提供することができますが、その後、設計時のダミーデータと実行時のバインディングの両方をロードすることによってリソースを浪費せずに、実際の実行時のデータをバインドできるようにするためには、いくつかの曲芸があります。

私が本当に欲しいものは、たとえば、"John", "Paul", "George" および "Ringo" を XAML デザイナーでスタイル可能アイテムとして表示させる機能であり、私の ItemsControl のスタイラス項目として XAML デザイナーに表示されますが、アプリケーションを実行すると実際のデータが表示されます。

また、Blend では、実行時の条件では WPF によって効果的に無視される、設計時のバインディング データを定義するいくつかの凝った属性が使用できることも知っています。

そこで、私の質問は

1. Visual Studio XAML デザイナーでコレクションと非自明なデータの設計時バインディングを活用し、実行時バインディングにスムーズに切り替えるにはどうしたらよいでしょうか。

1.

2. 他の人はこのデザインタイムとランタイムのデータの問題をどのように解決したのでしょうか? 私の場合、(例えばデータベースクエリでできるように)両方に同じデータを使用することは非常に簡単ではありません。

3. データ統合された XAML デザインに使用できる、式ブレンドの代替はありますか。

3. (代替品があることは知っていますが、私は特に私が使用し、バインドされたサンプルデータなどを見ることができるものが欲しいのです?)

どのように解決するのですか?

VS2010 を使用すると、次のようになります。 設計時属性 (を使用することができます(SLとWPFの両方で動作します)。私は通常、とにかくモックのデータソースを用意しているので、ただそれだけのことです。

  • 名前空間宣言を追加する

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    
    
  • モックデータコンテキストをウィンドウ/コントロールのリソースに追加する

    <UserControl.Resources>
      <ViewModels:MockXViewModel x:Key="DesignViewModel"/>
    </UserControl.Resources>
    
    
  • デザインタイムデータコンテキストの設定

    <Grid d:DataContext="{Binding Source={StaticResource DesignViewModel}}" ...
    
    

十分に機能する。