我有以下非常简单的控件模板:
<ControlTemplate x:Key="BarChartControlTemplate">
<Grid
x:Name="Part_Grid"
BackgroundColor="LightYellow"
ColumnDefinitions="*,auto">
<ScrollView
x:Name="Part_Scroller"
BackgroundColor="ForestGreen"
Orientation="Horizontal">
<Grid
x:Name="Part_Content"
BackgroundColor="Orange"/>
</ScrollView>
</Grid>
如果我运行面向Windows的应用程序,一切都很好;我的Part_Grid显示为浅黄色,Part_Content显示为橙色(绿色的Part_Scroller明显被Part_Content隐藏):
但是,如果我运行面向Android的代码(在物理设备上),橙色的Part_Content将不再显示:
我尝试设置任意大小,但没有成功。
毫不奇怪,如果我将Part_Content从ScrollView中取出,它会正确显示。
<ControlTemplate x:Key="BarChartControlTemplate">
<Grid
x:Name="Part_Grid"
BackgroundColor="LightYellow"
ColumnDefinitions="*,auto">
<ScrollView
x:Name="Part_Scroller"
BackgroundColor="ForestGreen"
Orientation="Horizontal">
</ScrollView>
<Grid
x:Name="Part_Content"
BackgroundColor="Orange"/>
</Grid>
如何解释Windows和Android在ScrollView工作方式上的差异?
- 更新1:**
问题似乎出在ScrollView的方向上,因为如果我把它切换到垂直,在Android上一切都很好(当然在Windows上也是如此),显然这不是我想要的:我希望能够水平滚动图形。
1条答案
按热度按时间zsohkypk1#
我通过在Part_Content中添加以下行或多或少地解决了这个问题:
基本上,使用此绑定,我希望控件的高度与控件的当前高度匹配...
这完全没有意义,我不明白为什么它能起作用,但现在它起作用了。
另一种选择(因为ScrollView在android上似乎有bug)是使用CollectionView(在我的例子中,它将只有一个Grid项-以前的Part_Content-在代码端创建)。
它在两个平台上都很好用,我不知道我找到的两个解决方案中哪一个最丑。