0

在 WPF 应用程序中,我想使用来自文件夹位置的图像显示瓷砖网格(本质上是按钮)。文件夹中可能有任何不同数量的图像,因此需要动态生成图块/按钮并根据数量进行格式化。这些需要是可以触发鼠标点击事件的按钮。

我对 C# 和 .NET 很陌生,所以我想了解一下最好的方法是什么。我已将其作为 WPF 应用程序启动,所以使用模板是个好主意吗?或者,如果只是动态创建带有背景图像的表单按钮是一个简单的选择,那么我会试一试。

4

2 回答 2

1

您可能需要一个 ItemsControl,例如 ListView。不幸的是,WPF 仅提供 GridView 实现,但 ListView 旨在支持您在 Windows 文件资源管理器中看到的所有视图。对于基于 Tiled 的视图,您需要重写 ViewBase 类并将其分配给 ListView 的 View 属性。

几年前,我有演示您想要什么的示例代码。

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

如何:创建自定义视图模式

我知道 Xceed DataGrid 有一个内置的 CardView 模式。我不知道它是否在免费版本中可用:Xceed WPF DataGrid 文档

编辑我刚刚检查了 MSDN 示例,我认为它们与您想要的很接近。

于 2012-11-27T07:54:17.337 回答
0

我会去ItemsControl。您需要一个代表按钮的类,具有 X、Y、ImageUri 等属性。您通过公开生成的按钮ObservableCollection并将其绑定到ItemsSource您的ItemsControl. 然后你改变你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(各有优缺点)。

于 2012-11-27T09:45:01.197 回答