ホームページ >バックエンド開発 >C++ >MVVMを使用してWPFキャンバスに長方形を動的に追加する方法は?

MVVMを使用してWPFキャンバスに長方形を動的に追加する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-29 17:31:11336ブラウズ

How to Dynamically Add Rectangles to a WPF Canvas Using MVVM?

WPF MVVMモードでは、Canvasに長方形を追加

問題の説明

MVVMアプリケーションでCanvasに一連の長方形を動的に生成して表示する必要があります。長方形の数は実行時に不明であり、それらをキャンバスに追加するための効率的なソリューションが必要です。

solution

viewmodelを作成します。これには、長方形リストの抽象表現が含まれています。

MainWindowで、長方形の容器としてキャンバスを作成します。

viewmodelのコレクションを
<code class="language-csharp">public class RectItem
{
    public double X { get; set; }
    public double Y { get; set; }
    public double Width { get; set; }
    public double Height { get; set; }
}

public class ViewModel
{
    public ObservableCollection<RectItem> RectItems { get; set; }
}</code>
の属性にバインドします。これにより、コレクション内の各アイテムに長方形が自動的に生成されます。

各長方形のアイテムのxおよびy属性に従って、スタイルバインディング、

および

属性を設定することを選択できます。

<code class="language-xml"><ItemsControl ItemsSource="{Binding RectItems}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Canvas.Left" Value="{Binding X}" />
            <Setter Property="Canvas.Top" Value="{Binding Y}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Rectangle Fill="Black" Height="{Binding Height}" Width="{Binding Width}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl></code>
スタイルが環境(UWPなど)にバインドされている場合、長方形のテンプレートでレンダリング変換を使用できます。 この方法により、実行中の長方形の数に関係なく、ビューモデルデータデータの長方形を動的に追加および表示できます。

以上がMVVMを使用してWPFキャンバスに長方形を動的に追加する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。