在WPF應用程序中,我想使用來自文件夾位置的圖像來顯示網格圖塊(實質上是按鈕)。文件夾中可能有任何不同數量的圖像,因此需要根據金額動態生成和格式化圖塊/按鈕。這些需要是可以觸發鼠標點擊事件的按鈕。C#.NET動態表單控件或WPF模板
我對C#和.NET非常陌生,所以我只想指出做這件事的最好方法。我已經開始作爲一個WPF應用程序,所以使用模板是一個好主意?或者,如果只是動態地創建帶有背景圖像的表單按鈕是一個簡單的選擇,那麼我會給它一個去。
在WPF應用程序中,我想使用來自文件夾位置的圖像來顯示網格圖塊(實質上是按鈕)。文件夾中可能有任何不同數量的圖像,因此需要根據金額動態生成和格式化圖塊/按鈕。這些需要是可以觸發鼠標點擊事件的按鈕。C#.NET動態表單控件或WPF模板
我對C#和.NET非常陌生,所以我只想指出做這件事的最好方法。我已經開始作爲一個WPF應用程序,所以使用模板是一個好主意?或者,如果只是動態地創建帶有背景圖像的表單按鈕是一個簡單的選擇,那麼我會給它一個去。
我會去爲ItemsControl
。您需要一個表示您的按鈕的類,並具有諸如X,Y,ImageUri等屬性。您通過ObservableCollection
公開生成的按鈕並將其綁定到ItemsControl
的ItemsSource
。然後,你改變你的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
將覆蓋圖像顯示按鈕。其他選擇是使用Canvas
或UniformGrid
作爲ItemsPanelTemplate
(兩者都有其優點和缺點)。
您可能需要一個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樣本,我認爲他們是接近你想要什麼。
感謝amnezjak,我設法從谷歌足夠的關鍵字,並蠻力我的方式讓它工作。 – Alex