我正在开发一个 UWP 应用程序,我的要求是 - 我有一个数据网格,其中使用 DataTemplate 资源定义了行详细信息部分。模板内部将有一个包含多个枢轴项的枢轴。其中一个枢轴项目将有一个组合框。
<Page>
<Page.Resources>
<DataTemplate x:Key="RowDetailsTemplate">
<Grid HorizontalAlignment="Left" Margin="50,0,30,0" VerticalAlignment="Stretch" Background="Yellow">
<Pivot Tapped="Pivot_Tapped">
<PivotItem Header="ABC">
<ComboBox Header="Colors" PlaceholderText="Pick a color" Width="200" Grid.Row="1" HorizontalAlignment="Left">
<x:String>Blue</x:String>
<x:String>Green</x:String>
<x:String>Red</x:String>
<x:String>Yellow</x:String>
</ComboBox>
</PivotItem>
<PivotItem Header="DEF">
</PivotItem>
</Pivot>
</Grid>
</DataTemplate>
</Page.Resources>
<controls:DataGrid RowDetailsTemplate="{StaticResource RowDetailsTemplate}" />
</Page>
问题是 - 枢轴项目和组合框都无法在触摸时工作。显然我有触摸屏,这些在 rowdetails 模板之外都可以正常工作。为什么不在行详细信息模板中?
还有另一项观察结果 - 一旦我删除除包含组合框之外的所有枢轴项目,组合框就开始响应触摸,即使在行详细信息模板内也很好。
我认为你必须从某个地方开始;如果您期望“交互”,那就将事件处理程序添加到组合框;例如选择已更改。我想你期待“Tapped”被继承;但事实并非如此。
至少,其他选择器中的“选择器”开始引入副作用,“混淆”选择/单击/点击/按下指针/拖动过程。
我可以通过触摸重现相同的行为。建议您使用Hub代替
Pivot
。我的测试代码如下。
<Page.Resources>
<DataTemplate x:Key="RowDetailsTemplate">
<Grid HorizontalAlignment="Left" Margin="50,0,30,0" VerticalAlignment="Stretch" Background="Yellow">
<Hub Tapped="Hub_Tapped">
<HubSection MinWidth="300" Header="ABC">
<DataTemplate>
<ComboBox Header="Colors" PlaceholderText="Pick a color" Width="200" Grid.Row="1" HorizontalAlignment="Left">
<x:String>Blue</x:String>
<x:String>Green</x:String>
<x:String>Red</x:String>
<x:String>Yellow</x:String>
</ComboBox>
</DataTemplate>
</HubSection>
<HubSection MinWidth="300" Header="DEF"/>
</Hub>
</Grid>
</DataTemplate>
</Page.Resources>
建议您在反馈中心提交此意外行为。您可以在“开始”菜单中找到“反馈中心”。 提交请求时请选择开发者平台->API反馈作为类别。 相关团队将检查该请求。
您提交请求后,请分享您的链接,我将帮助您通过内部渠道提交此反馈。