目标是创建这样的布局。
我来自iOS开发,是WPF开发的新手,所以我的想法是将StackViews的CollectionViews与iOS的4种多媒体元素结合起来,但是我知道WPF的工作原理与iOS截然不同。因此,我将在WPF中使用StackPanels和WrapPanels,如果我的解决方案不正确,请给我一个更好的解决方案。
<Window x:Class="WPF_MultiViewer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF_MultiViewer"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<WrapPanel>
<StackPanel x:Name="MyStackPanel">
<StackPanel Orientation="Horizontal">
<Button Height="100" Width="80">Button1</Button>
<Button Height="100" Width="80">Button2</Button>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button Height="100" Width="80">Button1</Button>
<Button Height="100" Width="80">Button2</Button>
</StackPanel>
</StackPanel>
</WrapPanel>
</Grid>
</Window>
我知道,如果我将其进行硬编码并复制粘贴12次,它将起作用,但是问题是我想创建一个模板,然后动态创建它,例如在一列中动态创建12次4栈面板。为了轻松地控制和维护它,如何在WPF中实现?
答案 0 :(得分:2)
为您提供一个使用示例:
import createMap from 'ol-mapbox-style';
createMap('map', 'https://api.mapbox.com/styles/v1/itatters/cjo09902ya4z92speha95h57d.html?fresh=true&title=true&access_token=API-KEY-HERE#16.0/45.505643/-73.576557/305')
.then(function(map) {
// map is an ol/Map instance with the layers from the Mapbox style object
});
答案 1 :(得分:1)
在WPF中,您可以使用MVVM(模型-视图-视图模型)模式。如果要动态创建元素,则还可以在wpf中使用一个名为“ Prism”的库。 这里 https://www.c-sharpcorner.com/article/how-to-add-the-dynamic-control-in-to-the-view-from-view-mode/ 是一个小教程,您如何在运行时创建元素。
根据您的要求,我将使用网格,并且ViewModel可以为定义的行和列动态创建元素。