SurfaceListbox锁定项目 [英] SurfaceListbox Lock on items

查看:105
本文介绍了SurfaceListbox锁定项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 我有一个SurfaceListbox 并且项目是水平显示但是当我滚动 通过他们,我希望它不应该在两者之间停止,但总是 锁定 其中一项。非常感谢任何指针


 


谢谢


Jason

解决方案

嗨Jason,


 


for我使用了SurfaceScrollViewer,我没有看到使用SurfaceListBox的任何优势,因为我不需要选择的东西。


 


 < s:SurfaceItemsControl Name =" MySurfaceItemsControl" MinWidth = QUOT; 1024"了minHeight = QUOT; 768" >


   &NBSP; &NBSP;  < s:SurfaceItemsControl.ItemTemplate>


   &NBSP; &NBSP; &NBSP; &NBSP;  < DataTemplate>


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < Canvas Width =" 1024"高度="768">


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < Image Source =" {Binding}"宽度= QUOT; 800"高度="600"/>


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < / Canvas>


   &NBSP; &NBSP; &NBSP; &NBSP;  < / DataTemplate>


   &NBSP; &NBSP;  < / s:SurfaceItemsControl.ItemTemplate>


   &NBSP; &NBSP;  < s:SurfaceItemsControl.ItemsPanel>


   &NBSP; &NBSP; &NBSP; &NBSP;  < ItemsPanelTemplate>


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < StackPanel Orientation =" Horizo​​ntal">


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < / StackPanel>


   &NBSP; &NBSP; &NBSP; &NBSP;  < / ItemsPanelTemplate>


   &NBSP; &NBSP;  < / s:SurfaceItemsControl.ItemsPanel>


   &NBSP; &NBSP;  < s:SurfaceItemsControl.Template>


   &NBSP; &NBSP; &NBSP; &NBSP;  < ControlTemplate>


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < s:SurfaceScrollViewer VerticalScrollBarVisibility ="已禁用  


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; PreviewContactUp =" MySurfaceItemsControl_ContactUp" 


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ScrollBar.Scroll =" MySurfaceListBox_Scroll">


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < ItemsPresenter />


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  < / s:SurfaceScrollViewer>


   &NBSP; &NBSP; &NBSP; &NBSP;  < / ControlTemplate>


   &NBSP; &NBSP;  < / s:SurfaceItemsControl.Template>


    < / s:SurfaceItemsControl>


 


 


稍后,在ContactUp事件:


 


  private void MySurfaceItemsControl_ContactUp(object sender,ContactEventArgs e)


&NBSP;&NBSP; &NBSP; &NBSP;如果(e.OriginalSource是SurfaceThumb)


< span style ="white-space:pre"> return;


 


   &NBSP; &NBSP; &NBSP; &NBSP;   if(e.OriginalSource是SurfaceRepeatButton)


   &NBSP; &NBSP; &NBSP; &NBSP;   {


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;   SurfaceScrollViewer theScrollViewer = UIHelper.FindVisualChildren< SurfaceScrollViewer>(this).First();


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;   GotoSlide((int)Math.Round(theScrollViewer.Horizo​​ntalOffset / 1024));


   &NBSP; &NBSP; &NBSP; &NBSP;  }


 


   &NBSP; &NBSP; &NBSP; &NBSP;   else


   &NBSP; &NBSP; &NBSP; &NBSP;   {


   &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;   GotoSlide(-1);


   &NBSP; &NBSP; &NBSP; &NBSP;  }


   &NBSP; &NBSP;  }


 


 


GotoSlide方法进行计算并使用  theScrollViewer .ScrollToHorizo​​ntalOffset()平移到相应的幻灯片。


 


 I have a SurfaceListbox  and the items are displayed horizontally But when I scroll  through them , I would like that it should stop not in between but always  lock in  one of the items .Any pointers would be greatly appreciated

 

Thanks

Jason

解决方案

Hi Jason,

 

for that I have used a SurfaceScrollViewer, I didn't see any advantage in using the SurfaceListBox because I didnt need the selection stuff.

 

 <s:SurfaceItemsControl Name="MySurfaceItemsControl" MinWidth="1024" MinHeight="768" >

        <s:SurfaceItemsControl.ItemTemplate>

            <DataTemplate>

                <Canvas Width="1024" Height="768">

                        <Image Source="{Binding}" Width="800" Height="600"/>

                </Canvas>

            </DataTemplate>

        </s:SurfaceItemsControl.ItemTemplate>

        <s:SurfaceItemsControl.ItemsPanel>

            <ItemsPanelTemplate>

                <StackPanel Orientation="Horizontal">

                </StackPanel>

            </ItemsPanelTemplate>

        </s:SurfaceItemsControl.ItemsPanel>

        <s:SurfaceItemsControl.Template>

            <ControlTemplate>

                <s:SurfaceScrollViewer VerticalScrollBarVisibility="Disabled" 

                                       PreviewContactUp="MySurfaceItemsControl_ContactUp" 

                                       ScrollBar.Scroll="MySurfaceListBox_Scroll">

                    <ItemsPresenter/>

                </s:SurfaceScrollViewer>

            </ControlTemplate>

        </s:SurfaceItemsControl.Template>

    </s:SurfaceItemsControl>

 

 

Later, in the ContactUp event:

 

 private void MySurfaceItemsControl_ContactUp(object sender, ContactEventArgs e)

        {

if (e.OriginalSource is SurfaceThumb)

return;

 

            if (e.OriginalSource is SurfaceRepeatButton)

            {

                SurfaceScrollViewer theScrollViewer = UIHelper.FindVisualChildren<SurfaceScrollViewer>(this).First();

                GotoSlide((int)Math.Round(theScrollViewer.HorizontalOffset / 1024));

            }

 

            else

            {

                GotoSlide(-1);

            }

        }

 

 

The GotoSlide method makes its calculations and uses theScrollViewer.ScrollToHorizontalOffset() to pan to the appropriate slide.

 


这篇关于SurfaceListbox锁定项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆