2013-03-04 105 views
1

我想在我的代码来实现类似的功能: http://www.codeproject.com/Articles/536519/Extending-GridView-with-Drag-and-Drop-for-Grouping拖放不工作的GridView

我继续从该项目复制相关文件(Customized.xaml,Customized.xaml.cs,分组.xaml,Grouped.xaml.cs和GridViewEx.cs)到我的项目。 我已经改名为必要的项目为它来编译,但是我现在面临与GridView控件不滚动和项目的重新排序不工作在触摸屏的一个问题。 (奇怪的是,我仍然可以用鼠标移动物品,但Drop没有一致地注册)。 好像有某种布局问题或必须有滚动不是在所有工作中,将一个原因,只有放弃与鼠标的工作,和拖放功能工作的约50%的鼠标的时间。 有什么建议吗?

+1

请发表您的代码更好的解决方案(想法)。 – linguini 2013-03-04 16:20:44

+0

在我的初始页面上,我导航到使用Frame.Navigate(typeof(Customized))定制; 自定义和分组(.xaml和.cs)与上面的链接完全相同。 – 2013-03-04 16:22:50

+0

@YuriDoubov我和你有同样的问题,你有解决这个问题吗?我注意到,当我拖动一个项目时,它在我将项目释放到提示项目的位置时起作用。但是稍高或过低会导致OnDrop功能无法激活。 – foboi1122 2013-03-30 01:23:55

回答

1

我不知道,如果你还没有,现在还是想通了你的问题,但我最终搞清楚为什么我有这个问题。它证明你不仅需要导入GridViewEx.cs和相关的Grouped.xaml和Grouped.xaml.cs,还要导入“generic.xaml”中的内容。

<Style TargetType="local:GridViewEx"> 
    <Setter Property="Padding" Value="0,0,0,10" /> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="TabNavigation" Value="Once" /> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/> 
    <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" /> 
    <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="False" /> 
    <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" /> 
    <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="False" /> 
    <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" /> 
    <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" /> 
    <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True" /> 
    <Setter Property="IsSwipeEnabled" Value="True" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="local:GridViewEx"> 
       <Border BorderBrush="{TemplateBinding BorderBrush}" 
         Background="{TemplateBinding Background}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
        <ScrollViewer x:Name="ScrollViewer" 
             TabNavigation="{TemplateBinding TabNavigation}" 
             HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" 
             HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
             IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}" 
             VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" 
             VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
             IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}" 
             IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 
             IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 
             ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}" 
             IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" 
             BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"> 
         <StackPanel Orientation="Horizontal"> 
          <Border Width="60" x:Name="NewGroupPlaceHolderFirst" 
            Background="Transparent" Padding="{TemplateBinding Padding}" 
            Visibility="{Binding AllowNewGroup, Converter={StaticResource VisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}"/> 
          <ItemsPresenter 
           Header="{TemplateBinding Header}" 
           HeaderTemplate="{TemplateBinding HeaderTemplate}" 
           HeaderTransitions="{TemplateBinding HeaderTransitions}" 
           Padding="{TemplateBinding Padding}"/> 
          <Border Width="60" x:Name="NewGroupPlaceHolderLast" 
            Background="Transparent" Padding="{TemplateBinding Padding}" 
            Visibility="{Binding AllowNewGroup, Converter={StaticResource VisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}"/> 
         </StackPanel> 
        </ScrollViewer> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

我联系这个风格我Grouped.xaml后,它的工作如预期。希望这可以帮助。

+0

你是怎么把2连在一起的? – 2013-04-08 17:41:47

+0

我通过将上面的代码放在我的app.xaml下的中来链接它。请注意,在上面的代码中,我的GridViewEx是在本地命名空间下声明的。如果你已经在说... APP_NAME.Controls宣布你GridViewEx,那么你就必须通过添加行添加到您的App.xaml“的xmlns:控制=”使用:APP_NAME.Controls”那么,你也需要。修改<样式的TargetType =“本地:GridViewEx”>到<样式的TargetType =“控制:GridViewEx”>。一旦你正确地做到这一点,GridViewEx应自动识别这种风格。 – foboi1122 2013-04-09 06:12:02