不同方向的GridView中的XAML GridView
(标题编辑) 如何使用XAML实现这一点? 水平宽度是固定的,必须可滚动 可能是GridView或其他控件,如ItemsControl或StackPanel不同方向的GridView中的XAML GridView,xaml,windows-runtime,windows-store-apps,Xaml,Windows Runtime,Windows Store Apps,(标题编辑) 如何使用XAML实现这一点? 水平宽度是固定的,必须可滚动 可能是GridView或其他控件,如ItemsControl或StackPanel 只有在需要垂直方向的元素时才使用列表视图,否则网格视图会显示所有需要的内容。它以水平方向显示项目 两者的大部分功能是相同的。只有在需要将元素垂直放置时才使用列表视图,否则网格视图将显示所有需要的内容。它以水平方向显示项目 两者的大部分功能是相同的。如果我正确理解您的需求,您可以使用两个单元格的网格。左边的单元格将是带有stackpanel的
只有在需要垂直方向的元素时才使用列表视图,否则网格视图会显示所有需要的内容。它以水平方向显示项目
两者的大部分功能是相同的。只有在需要将元素垂直放置时才使用列表视图,否则网格视图将显示所有需要的内容。它以水平方向显示项目
两者的大部分功能是相同的。如果我正确理解您的需求,您可以使用两个单元格的网格。左边的单元格将是带有stackpanel的scrollviewer,第二个单元格将是带有垂直方向的wrappanel的scrollviewer 如果需要将数据绑定到某些itemssource,请将ItemsControl与自定义ItemsPanelTemplate-stackpanel、wrappanel、uniform grid、canvas或任何需要的面板一起使用 编辑:示例代码使用两个单元格,分别在其自己的scrollviewer中使用ListView和IntemsControl:
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListView x:Name="StudentsListView" ItemsSource="{Binding Students}">
<ListView.ItemTemplate>
<DataTemplate>
<Border Background="#484" Height="90" Width="200">
<TextBlock Text="{Binding Name}" FontSize="24" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ScrollViewer Grid.Column="1" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" ZoomMode="Disabled">
<ItemsControl ItemsSource="{Binding Students}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Markings}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="#888" Height="90" Width="90" Margin="5">
<TextBlock Text="{Binding }" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</ScrollViewer>
public class ViewModel
{
public ViewModel()
{
Students = Enumerable.Range(0, 25)
.Select(i => new Student
{
Name = "Student " + i,
Markings = Enumerable.Range(1, 30).Select(j => (j + i) % 5 + 1).ToList()
}).ToList();
}
public List<Student> Students { get; set; }
}
public class Student
{
public string Name { get; set; }
public List<int> Markings { get; set; }
}
公共类视图模型
{
公共视图模型()
{
学生=可枚举范围(0,25)
.选择(i=>new Student
{
Name=“Student”+i,
标记=可枚举。范围(1,30)。选择(j=>(j+i)%5+1)。ToList()
}).ToList();
}
公共列表学生{get;set;}
}
公立班学生
{
公共字符串名称{get;set;}
公共列表标记{get;set;}
}
结果是:
如果我正确理解您的要求,您可以使用两个单元格的网格。左边的单元格将是带有stackpanel的scrollviewer,第二个单元格将是带有垂直方向的wrappanel的scrollviewer 如果需要将数据绑定到某些itemssource,请将ItemsControl与自定义ItemsPanelTemplate-stackpanel、wrappanel、uniform grid、canvas或任何需要的面板一起使用 编辑:示例代码使用两个单元格,分别在其自己的scrollviewer中使用ListView和IntemsControl:
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListView x:Name="StudentsListView" ItemsSource="{Binding Students}">
<ListView.ItemTemplate>
<DataTemplate>
<Border Background="#484" Height="90" Width="200">
<TextBlock Text="{Binding Name}" FontSize="24" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ScrollViewer Grid.Column="1" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" ZoomMode="Disabled">
<ItemsControl ItemsSource="{Binding Students}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Markings}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="#888" Height="90" Width="90" Margin="5">
<TextBlock Text="{Binding }" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</ScrollViewer>
public class ViewModel
{
public ViewModel()
{
Students = Enumerable.Range(0, 25)
.Select(i => new Student
{
Name = "Student " + i,
Markings = Enumerable.Range(1, 30).Select(j => (j + i) % 5 + 1).ToList()
}).ToList();
}
public List<Student> Students { get; set; }
}
public class Student
{
public string Name { get; set; }
public List<int> Markings { get; set; }
}
公共类视图模型
{
公共视图模型()
{
学生=可枚举范围(0,25)
.选择(i=>new Student
{
Name=“Student”+i,
标记=可枚举。范围(1,30)。选择(j=>(j+i)%5+1)。ToList()
}).ToList();
}
公共列表学生{get;set;}
}
公立班学生
{
公共字符串名称{get;set;}
公共列表标记{get;set;}
}
结果是:
您可以通过将整行放入datatemplate并使用网格列设置宽度来实现这一点:
<ListView Width="500" Height="500" ItemsSource="{Binding Data}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Item}" Grid.Column="0"/>
<ListView ItemsSource="{Binding SubItems}" Grid.Column="1"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Enabled"
SelectionMode="None">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel
Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
您可以通过将整行放入datatemplate并使用网格列设置宽度来实现这一点:
<ListView Width="500" Height="500" ItemsSource="{Binding Data}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Item}" Grid.Column="0"/>
<ListView ItemsSource="{Binding SubItems}" Grid.Column="1"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Enabled"
SelectionMode="None">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel
Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
简单的工作示例:
我在“XAML输入和操作-高级概念”的第5个示例中找到了高级示例:简单的工作示例:
我在“XAML输入和操作-高级概念”的第5个示例中找到了高级示例:@Seema_Soam谢谢,但问题尚未解决。即使我使用GridView,我也找不到示例sample@Seema_Soam谢谢,但问题还没有解决。即使我使用GridView,我也找不到插图样本的示例是的,但是如果我想滚动第一个垂直stackpanel。。。第二个牢房呢?它会和第一个单元格一起滚动吗?v