【发布时间】:2019-07-31 13:57:05
【问题描述】:
我想制作具有类似于 windows 日历中的布局的日历应用程序
我想知道在 wpf 应用程序中我可以使用哪些控件来执行此布局。我在考虑这个块中的网格和文本块,但这不适用于多个网格单元。我需要我的日历中的事件可以在此网格中拆分为多个单元格。 如何在 WPF 中实现相同的布局?
【问题讨论】:
我想制作具有类似于 windows 日历中的布局的日历应用程序
我想知道在 wpf 应用程序中我可以使用哪些控件来执行此布局。我在考虑这个块中的网格和文本块,但这不适用于多个网格单元。我需要我的日历中的事件可以在此网格中拆分为多个单元格。 如何在 WPF 中实现相同的布局?
【问题讨论】:
我认为您使用Grid 进行布局是正确的。 Grid 是高度可定制的,应该支持您对多个单元共享的需求。试试Grid.ColumnSpan 属性。您应该正确设置您的ColumnDefinition 才能正确使用它。
查看official documentation 中的示例以获取更多详细信息。 这也是来自官方网站:
<Grid VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True" Width="250" Height="100">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock FontSize="20" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="0">2005 Products Shipped</TextBlock>
<TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="0">Quarter 1</TextBlock>
<TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="1">Quarter 2</TextBlock>
<TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="2">Quarter 3</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0">50000</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="1">100000</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="2">150000</TextBlock>
<TextBlock FontSize="16" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="3">Total Units: 300000</TextBlock>
</Grid>
【讨论】:
如果我有这个要求,我会考虑购买 Telerik 许可证。
看看这个https://www.codeproject.com/Articles/30329/Creating-an-Outlook-Calendar-using-WPF-Part-1
由于您似乎需要不到半小时的定位和半列宽,我不太确定网格是要走的路。很可能证明更容易在画布上定位和拖动。然后进行一些计算以检测重叠并“对齐”到列。 在位图上画线。
约会可能应该是一个用户控件,而不仅仅是一个文本块。
【讨论】: