LongListMultiSelector - 你能否抑制将List置于编辑模式的默认点击行为?

时间:2013-10-10 05:21:52

标签: windows-phone-8

好的,我希望这没有一个令人尴尬的明显答案,但我无法通过搜索找到解决方案。

我希望我的longlistmulti基本上像Mail应用程序一样,即使用“select”appbar按钮将列表置于编辑模式,这样你就可以对它进行操作。

但是,我想禁止列表响应任何项目左侧的点击的行为,即项目宽度的前10%部分,在编辑模式下列出。

我有一个按钮作为项目模板的一部分,它与左侧非常齐平,我需要作为每个项目的自己的事件处理程序的触发器。

所以我只想阻止通过点击项目将其置于编辑模式的事件。希望这可以做到。 史蒂夫

快速添加注意事项:无论如何我都要禁止这种默认行为,即使我决定不将该按钮作为我的最终实现..我不想将该按钮视为永久性考虑因素

1 个答案:

答案 0 :(得分:1)

你有几个选择。一个是处理IsSelectionEnabledChanged事件,另一个是修改控件模板。如果你想自己将列表置于编辑模式,我建议使用模板修改方法,因为在确定更改事件的来源时,事件处理程序可能有点复杂。

从“文档大纲”窗格( CTRL + W U 以显示),右键单击列表控件,然后导航到“编辑”其他模板=>编辑ItemContainerStyle =>编辑副本...使用该对话框命名并将模板放在首选资源字典中。查找名为InnerHintPanelOuterHintPanel的矩形并删除它们。这将删除用于激活编辑模式的命中区域。这些矩形的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>