簡體   English   中英

如何在不編輯視圖的情況下在 WPF MVVM 中生成網格的行和列?

[英]How to generate rows and columns of a grid in WPF MVVM without editing the view?

我知道 MVVM 背后的想法是將ViewViewmodel分開,而View中的代碼隱藏是一件壞事。

這就是我在不遵循 MVVM (xaml.cs) 時生成特定列數的方式。

for (int i = 0; i < Constants.GRID_COLUMN_NUMBER; i++)
{
    ColumnDefinition tempColumn = new ColumnDefinition();
    gridName.ColumnDefinitions.Add(tempColumn);
}

由於從ViewModel訪問網格以生成行/列是一件壞事,那么實現這一目標的最有效方法是什么?

使用帶有代碼隱藏的用戶控件是可接受的解決方案嗎?

您可以為此目的使用行為。 您不必在視圖中添加代碼,只需創建一個專用的 class 負責將網格生成為Behavior<Grid>並將其添加到 xaml。

然后Behavior<Grid>也可以單獨進行單元測試。

Microsoft Blend 使用這種方法。

例如

public class DynamicColumn: Behavior<Grid> {}

你像這樣使用它

<Grid>
   <Interaction.Behaviors>
      <DynamicColumn />
   </Interaction.Behaviors>
<Grid>

您可以在此處找到更多信息: https://www.wpftutorial.net/Behaviors.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM