我试图了解 RelativePanel 如何在适用于 Windows 10 的通用应用程序中工作,以及如何拆分元素。
我正在尝试按如下方式拆分 RelativePanel 的内容:
MainRelativePanel
-------------------------------------------------------
|Image| RelativePanel1 | RelativePanel2 |
|Image| RelativePanel1 | RelativePanel2 |
-------------------------------------------------------
我的图像控件是固定宽度,即 40,我的 RelativePanel 属性设置如下:
RelativePanel.AlignTopWithPanel="True"
RelativePanel.AlignLeftWithPanel="True"
这部分工作正常。
对于我的 RelativePanel1,我有以下 RelativePanel 属性:
RelativePanel.RightOf="Image"
对于我的 RelativePanel2,我有以下 RelativePanel 属性:
RelativePanel.RightOf="RelativePanel1"
RelativePanel.AlignRightWithPanel="True"
我希望它将RelativePanel1 和RelativePanel2 拆分为50/50,但我的RelativePanel1 水平占据了大部分屏幕,而我的RelativePanel2 垂直拉伸使我的Listview 中的DataTemplate 大得离谱。
-------------------------------------------------------
|Image| RelativePanel1 |RP2|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
-------------------------------------------------------
|Image| RelativePanel1 |RP2|
| | |
| | |
| | |
| | |
| | |
-------------------------------------------------------
如果我在 RelativePanel1 上设置一个宽度,我可以或多或少地让它工作,但理想情况下,我希望它是自动的,因为当你使用Grid
控件时会得到它。
有没有办法做到这一点?我不使用网格并拆分列的原因是我希望RelativePanel2 在较小的设备(例如Mobile)中显示在RelativePanel1 下方,并且我希望它们在较大的设备(例如平板电脑)上彼此相邻显示。
更新
这是列表视图 DataTemplate 请求的完整代码:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView ItemsSource="{Binding Items}"
Background="Red">
<ListViewItemPresenter ContentMargin="0">
</ListViewItemPresenter>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="0" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="White" BorderThickness="2">
<RelativePanel Background="#494949">
<Image Name="Logo"
Source="{Binding RPMain.Logo}"
RelativePanel.AlignTopWithPanel="True"
RelativePanel.AlignLeftWithPanel="True"
Width="40"
Height="40"
Margin="5" />
<RelativePanel Name="RP1"
Margin="10,0,0,0"
Background="Green"
RelativePanel.RightOf="Logo">
<Border Name="RP1Time"
Background="Orange"
Margin="5,5,0,0">
<TextBlock Text="{Binding RP1.Time}"
Foreground="white"
FontWeight="Bold" />
</Border>
<TextBlock Name="RP1Title"
Text="{Binding RP1.Title}"
Foreground="Black"
FontWeight="SemiBold"
RelativePanel.RightOf="RP1Time"
Margin="5,0,0,0"/>
<TextBlock Name="Description"
Text="{Binding RP1.Description}"
TextWrapping="Wrap"
RelativePanel.Below="RP1Title"
Margin="5,0,5,0" />
</RelativePanel>
<RelativePanel Name="RP2"
RelativePanel.RightOf="RP1"
RelativePanel.AlignRightWithPanel="True"
Background="Pink"
Margin="0,0,0,0">
<Border Name="RP2Time"
Background="Orange" Margin="5,5,0,0">
<TextBlock Text="{Binding Now.Time}"
Foreground="white"
FontWeight="Bold" />
</Border>
<TextBlock Name="RP2Title"
Text="{Binding RP2.Title}"
Foreground="Black"
FontWeight="SemiBold"
RelativePanel.RightOf="RP2Time"
Margin="5,0,0,0"/>
<TextBlock Name="RP2Description"
Text="{Binding RP2.Description}"
TextWrapping="Wrap"
RelativePanel.Below="RP2Title"
Margin="5,0,5,0"/>
</RelativePanel>
</RelativePanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
我已经为 RP1 和 RP2 RelativePanels 添加了背景颜色,因此您可以清楚地看到它没有被平均分割,这是我想要实现的,但正如我所提到的,我不能使用网格,因为我会喜欢在较小的设备上显示低于 RP1 的 RP2。
谢谢。