gpt4 book ai didi

wpf - 如何在WPF(MVVM模式)中动态创建布局

转载 作者:行者123 更新时间:2023-12-03 11:02:51 24 4
gpt4 key购买 nike

如何在WPF(MVVM模式)中动态创建布局?方案如下:

像是用于相机查看器的应用程序,
启动时,在屏幕顶部有一个带有标签(“添加摄像机”)的按钮的主 View ,添加摄像机后,它将显示在整个主屏幕中,选择第二个摄像机后,应将屏幕分为两个零件,选择第三台摄像机后,屏幕应分为第三部分,依此类推。

如何在WPF中做到这一点?

最佳答案

使用listview并将项目面板自定义为UniformGrid

<ListView ItemsSource="{Binding}" VerticalAlignment="Stretch" FlowDirection="LeftToRight" Grid.Row="1" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid ClipToBounds="True"></UniformGrid>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate >
<Border BorderThickness="2">
<DockPanel Background="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Id}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"></TextBlock>
</DockPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

后面的代码
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ObservableCollection<Camera> cameraList = new ObservableCollection<Camera>();

public MainWindow()
{
InitializeComponent();
this.DataContext = cameraList;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
int sn = cameraList.Count + 1;
cameraList.Add(new Camera() { Id = sn.ToString()});
}
}

public class Camera
{
public string Id { get; set; }
}

关于wpf - 如何在WPF(MVVM模式)中动态创建布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48090320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com