2012-11-27 53 views
0

在WPF應用程序中,我想使用來自文件夾位置的圖像來顯示網格圖塊(實質上是按鈕)。文件夾中可能有任何不同數量的圖像,因此需要根據金額動態生成和格式化圖塊/按鈕。這些需要是可以觸發鼠標點擊事件的按鈕。C#.NET動態表單控件或WPF模板

我對C#和.NET非常陌生,所以我只想指出做這件事的最好方法。我已經開始作爲一個WPF應用程序,所以使用模板是一個好主意?或者,如果只是動態地創建帶有背景圖像的表單按鈕是一個簡單的選擇,那麼我會給它一個去。

回答

0

我會去爲ItemsControl。您需要一個表示您的按鈕的類,並具有諸如X,Y,ImageUri等屬性。您通過ObservableCollection公開生成的按鈕並將其綁定到ItemsControlItemsSource。然後,你改變你的ItemsPanelTemplate電網:

 <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Grid>       
        <!--Here go rows and columns definitions--> 
       </Grid> 
      </ItemsPanelTemplate>     
     </ItemsControl.ItemsPanel> 

如果你有固定的行數和列數,您可以在XAML直接添加,否則在代碼隱藏運行時生成它們。您添加ItemsContainerStyle定位:

 <ItemsControl.ItemContainerStyle> 
      <Style> 
       <Setter Property="Grid.Row" Value="{Binding Y}" /> 
       <Setter Property="Grid.Column" Value="{Binding X}" /> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 

另外,你需要ItemTemplate將覆蓋圖像顯示按鈕。其他選擇是使用CanvasUniformGrid作爲ItemsPanelTemplate(兩者都有其優點和缺點)。

+0

感謝amnezjak,我設法從谷歌足夠的關鍵字,並蠻力我的方式讓它工作。 – Alex

1

您可能需要一個ItemsControl,如ListView。不幸的是,WPF只提供了GridView實現,但ListView旨在支持您在Windows文件瀏覽器中看到的所有視圖。對於基於Tiled的視圖,您需要重寫ViewBase類並將其分配給ListView的View屬性。

幾年前,我有示範代碼,演示你想要什麼。

以下鏈接包含MSDN示例: MSDN ListView.View samples

How to: Create a Custom View Mode

我知道Xceed DataGrid中有一個內置的CardView模式。我不知道這是否是在免費版本:Xceed WPF DataGrid documentation

編輯我剛剛查了MSDN樣本,我認爲他們是接近你想要什麼。