两个longlistselector或longlistselector中不同数据绑定的两列.可能的
本文关键字:longlistselector 两列 数据绑定 两个 | 更新日期: 2023-09-27 18:01:55
我想弄清楚如何在一个页面上有两列不同的绑定数据。左列为声音,右列为每个声音保存铃声任务。我不能在一页上放两个长列表选择器,它不允许。
使用示例,很容易看到如何为声音使用绑定数据。最棒的是,你只需要在绑定的项目中输入新的代码,它就会自动在每个页面上填充新的声音贴。
我想添加一个保存铃声瓷砖,基本上以相同的方式工作。但只有当我能在同一页面上获得声音磁贴旁边的保存铃声磁贴时,这才有意义。
有什么办法可以做到吗?所有我真正需要知道的,我认为,是如何获得两列不同的数据绑定到同一页,希望在一个longlistselector,所以它会滚动。
下面是我现在使用的代码示例。
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="SoundTileDataTemplate">
<Grid Background="{StaticResource PhoneAccentBrush}"
Margin="0,0,135,0">
<Grid VerticalAlignment="Top"
HorizontalAlignment="right"
Width="40"
Height="40"
Margin="0, 6, 6, 0">
<Ellipse Stroke="{StaticResource PhoneForegroundBrush}"
StrokeThickness="3"/>
<Image Source="/Assets/AppBar/Play.png" />
</Grid>
<StackPanel VerticalAlignment="bottom">
<TextBlock Text="{Binding Title}"
Margin="6,0,0,6"/>
</StackPanel>
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<!--Pivot Control-->
<phone:Pivot Title="{Binding Path=LocalizedResources.ApplicationTitle,
Source={StaticResource LocalizedStrings}}">
<!--Pivot item one-->
<phone:PivotItem Header="{Binding Animals.Title}">
<!--Double line list with text wrapping-->
<phone:LongListSelector Margin="0,0,-12,0"
ItemsSource="{Binding Animals.Items}"
LayoutMode="List"
ItemTemplate="{StaticResource SoundTileDataTemplate}"
SelectionChanged="LongListSelector_SelectionChanged">
</phone:LongListSelector>
</phone:PivotItem>
</phone:Pivot>
</Grid>
很容易解决。
<DataTemplate x:Key="NewItemTemplate">
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" >
<StackPanel Orientation="Horizontal" Width="56">
<CheckBox x:Name="CheckBox1" HorizontalAlignment="Left" IsChecked="{Binding Checked, Mode=TwoWay}" BorderBrush="Black" Style="{StaticResource CheckBoxStyleGrey1}" Width="90" Height="74" />
</StackPanel>
<StackPanel Orientation="Horizontal" RenderTransformOrigin="0.5,0.5" Width="803" >
<StackPanel.RenderTransform>
<CompositeTransform ScaleX="-1"/>
</StackPanel.RenderTransform>
<TextBlock Text="{Binding lItem}" Foreground="Black" FontSize="45" Margin="-176,0,0,0" RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<CompositeTransform ScaleX="-1"/>
</TextBlock.RenderTransform>
</TextBlock>
<TextBlock Text="{Binding lCategory}" Foreground="Black" Margin="-146,0,-2,0" RenderTransformOrigin="0.5,0.5" >
<TextBlock.RenderTransform>
<CompositeTransform ScaleX="-1"/>
</TextBlock.RenderTransform>
</TextBlock>
</StackPanel>
</StackPanel>
</DataTemplate>
根据您的需要编辑ItemTemplate,如果有错误,您可能不得不在blend中使用它。在Blend中,选择你的长列表选择器,编辑项目模板。
首先,通过将两个长列表选择器相邻地添加,您正在从一个非常错误的角度处理这个问题。这对用户不利,对用户体验不利,对UI设计不利,对独角兽公司不利。
您正在尝试将另一个长列表选择器中的功能(保存铃声)关联到另一个长列表选择器中的相应项。究竟是什么让你认为添加另一个长列表选择器和填充它与许多保存铃声按钮将解决你的问题?首先,假设您以某种方式实现了添加两个相邻的长列表选择器,并将您的项目部署在左侧选择器上,并在右侧保存铃声按钮。当滚动它们时,您打算如何正确地将它们关联起来?用户将滚动左侧选择器,而右侧长列表选择器将保持静态。
你不应该再添加一个长列表选择器到你的前面。相反,你应该在一个长列表选择器中修改你的ItemTemplate。然后你将能够有一个以上的瓷砖,按钮,文本或任何你需要一个单一的LongListSelector项目。
ItemTemplate="{StaticResource SoundTileDataTemplate}"
我不打算提交一个解决方案,为一个LongListSelector项添加多个按钮/平铺/文本,并将它们的通信/功能相关联。因为在互联网上已经有大约500万个这样的例子。
我强烈建议你阅读Windows Phone设计指南。因为你的想法只会让你在应用商店中多出一款糟糕的应用。人们真的受够了蹩脚的应用程序。所以,请完全停止为Windows Phone开发应用程序,或者休息一下,不管你现在做什么,去读一下设计原则。