【发布时间】:2015-06-08 09:37:10
【问题描述】:
我正在使用 ListPicker,但很难让设计工作。我已经包含了我所做的测试:
<ControlTemplate x:Key="listpicker_style" TargetType="toolkit:ListPicker">
<StackPanel>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="PickerStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="Highlighted">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="UserControl"
Storyboard.TargetProperty="Foreground"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneTextBoxForegroundBrush}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="Border"
Storyboard.TargetProperty="Background"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneTextBoxEditBackgroundColor}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="Border"
Storyboard.TargetProperty="BorderBrush"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneTextBoxEditBorderBrush}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="Border"
Storyboard.TargetProperty="Background"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource TransparentBrush}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="Border"
Storyboard.TargetProperty="BorderBrush"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneDisabledBrush}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="UserControl"
Storyboard.TargetProperty="Foreground"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneDisabledBrush}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentControl
Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}"
Foreground="{StaticResource PhoneSubtleBrush}"
FontSize="{StaticResource PhoneFontSizeNormal}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="0 0 0 8"/>
<Grid>
<Rectangle Fill="#FFEAC726" HorizontalAlignment="Left" Height="52" Margin="0,0,-7,0" Stroke="Black" VerticalAlignment="Top" Width="83"/>
<Rectangle Fill="#FF685B1F" HorizontalAlignment="Left" Height="9" Margin="0,0,-7,0" Stroke="Black" VerticalAlignment="Top" Width="83"/>
<Rectangle Fill="#FF685B1F" HorizontalAlignment="Left" Height="9" Margin="0,43,-7,0" Stroke="Black" VerticalAlignment="Top" Width="83"/>
<Border x:Name="Border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" Opacity="0">
<UserControl x:Name="UserControl" Foreground="{TemplateBinding Foreground}" Margin="7,-3,-7,3">
<StackPanel>
<TextBlock x:Name="MultipleSelectionModeSummary" Margin="8 8 0 8" />
<Canvas x:Name="ItemsPresenterHost" MinHeight="46">
<ItemsPresenter x:Name="ItemsPresenter">
<ItemsPresenter.RenderTransform>
<TranslateTransform x:Name="ItemsPresenterTranslateTransform"/>
</ItemsPresenter.RenderTransform>
</ItemsPresenter>
</Canvas>
</StackPanel>
</UserControl>
</Border>
</Grid>
</StackPanel>
</ControlTemplate>
基本上我想要实现的是创建一个看起来像滚动的列表选择器。当您单击它时,滚动会展开并显示整个选项。因此我对使用全屏外观不感兴趣。
我也尝试过其他类似的失败尝试,其中我使用设计的用户控件作为动画的顶部和底部滚动。但是listpicker的设计已经不可能了。
因此,我的问题是,是否有人设计了列表选择器,使用用户控件,以便我可以覆盖它们,或者您是否可以指导我如何正确操作列表选择器。我使用过 blend、expersion design、Illustrator 和 XAML,因此任何使用它们中的任何一个来设计列表选择器的方法都将不胜感激!
视觉示例
所以这个想法是这样的:
这样文本在滚动条内,当你点击它时,滚动条会展开,里面有一个列表,你可以滚动选择元素。
用户控制
图片概览
选中的项目:
单击该元素并出现一个列表:
这就是列表选择器的工作方式我想将其设计为滚动条,无论是从头开始,还是使用工具listpicker description,都是我正在寻找的。然而,我没有成功地使扩展看起来不错。
【问题讨论】:
-
你有一个直观的例子来说明你的目标是什么,你可以向人们指出什么?无法准确地可视化您在描述中的意思。不过我确信它是可行的。
-
所以你想在文字 Scroll 的区域内有一个可滚动的区域,当其中的一个项目被选中时,它会展开以占用更多的滚动区域?
-
所以每个项目都是一个单独的卷轴?那么当一个项目被点击(滚动)时,滚动会展开以显示更多内容?抱歉,朋友,我仍然不是 100% 清楚你要做什么哈哈。
-
所以滚动条一开始只是显示最少的内容,然后如果用户单击该滚动条内容,滚动条会垂直打开以在其中提供一个列表选择器?
-
是的,很抱歉没有时间跳回到这个,目前我的工作任务太多了,不过今天会尝试恢复。
标签: c# xaml windows-phone-8 expression-blend listpicker