好的,我希望这没有一个令人尴尬的明显答案,但我无法通过搜索找到解决方案。
我希望我的longlistmulti基本上像Mail应用程序一样,即使用“select”appbar按钮将列表置于编辑模式,这样你就可以对它进行操作。
但是,我想禁止列表响应任何项目左侧的点击的行为,即项目宽度的前10%部分,在编辑模式下列出。
我有一个按钮作为项目模板的一部分,它与左侧非常齐平,我需要作为每个项目的自己的事件处理程序的触发器。
所以我只想阻止通过点击项目将其置于编辑模式的事件。希望这可以做到。 史蒂夫
快速添加注意事项:无论如何我都要禁止这种默认行为,即使我决定不将该按钮作为我的最终实现..我不想将该按钮视为永久性考虑因素
答案 0 :(得分:1)
你有几个选择。一个是处理IsSelectionEnabledChanged
事件,另一个是修改控件模板。如果你想自己将列表置于编辑模式,我建议使用模板修改方法,因为在确定更改事件的来源时,事件处理程序可能有点复杂。
从“文档大纲”窗格( CTRL + W , U 以显示),右键单击列表控件,然后导航到“编辑”其他模板=>编辑ItemContainerStyle =>编辑副本...使用该对话框命名并将模板放在首选资源字典中。查找名为InnerHintPanel
和OuterHintPanel
的矩形并删除它们。这将删除用于激活编辑模式的命中区域。这些矩形的XAML如下所示。
<Grid HorizontalAlignment="Stretch">
...
<Rectangle x:Name="InnerHintPanel" Grid.Column="0" Width="24"
Height="{TemplateBinding HintPanelHeight}"
HorizontalAlignment="Left"
Fill="Transparent"
StrokeThickness="0">
<Rectangle.RenderTransform>
<CompositeTransform TranslateX="24"/>
</Rectangle.RenderTransform>
</Rectangle>
...
</Grid>
<Rectangle x:Name="OuterHintPanel" Width="24"
HorizontalAlignment="Left"
Height="{TemplateBinding HintPanelHeight}"
Fill="{TemplateBinding Background}"
StrokeThickness="0" Opacity="0.0"/>
您应该删除所有将Storyboard.TargetName
设置为其中一个元素名称的故事板动画,否则如果您进入编辑模式并且无法找到这些元素,则控制状态的转换将导致异常。< / p>