WPF ItemsControl 取消选中item项,滚动条自动跑到该item顶部的问题

项目中ItemsControl 自定义了DataTemplate,代码如下:

<ScrollViewer x:Name="PaperScrollCiewer"  Margin="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Background="#ccc" ScrollChanged="PaperScrollCiewer_ScrollChanged" >
            <ItemsControl x:Name="MainItemsControl">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="10"></RowDefinition>
                                <RowDefinition Height="10*"></RowDefinition>
                            </Grid.RowDefinitions>
                            <InkCanvas Grid.Row="1" Background="{Binding ImgPath,Converter={StaticResource BitmapSourceConvert}}" Strokes="{Binding Strokes}" Width="{Binding Width}" Height="{Binding Height}">
                                <InkCanvas.DefaultDrawingAttributes>
                                    <DrawingAttributes Color="#FFFB1818" FitToCurve="False" Height="3" IgnorePressure="False" IsHighlighter="False" StylusTip="Ellipse" StylusTipTransform="Identity" Width="3"/>
                                </InkCanvas.DefaultDrawingAttributes>
                            </InkCanvas>
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>

  其中InkCanvas是用来添加墨迹的,功能就是想实现加载很多个画布,每个画布能单独的绘制墨迹。运行时候发现第一次点击某一个画布,滚动条就自动调整到该item的顶部去了,猜想是触发了SelectedChange事件,默认该item选中时候需要对齐。

  解决方法很简单,给ItemsControl设置属性CanContentScroll="True",完美解决。

  修改后代码如下:

<ScrollViewer x:Name="PaperScrollCiewer"  Margin="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Background="#ccc" ScrollChanged="PaperScrollCiewer_ScrollChanged" CanContentScroll="True">
            <ItemsControl x:Name="MainItemsControl">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="10"></RowDefinition>
                                <RowDefinition Height="10*"></RowDefinition>
                            </Grid.RowDefinitions>
                            <InkCanvas Grid.Row="1" Background="{Binding ImgPath,Converter={StaticResource BitmapSourceConvert}}" Strokes="{Binding Strokes}" Width="{Binding Width}" Height="{Binding Height}">
                                <InkCanvas.DefaultDrawingAttributes>
                                    <DrawingAttributes Color="#FFFB1818" FitToCurve="False" Height="3" IgnorePressure="False" IsHighlighter="False" StylusTip="Ellipse" StylusTipTransform="Identity" Width="3"/>
                                </InkCanvas.DefaultDrawingAttributes>
                            </InkCanvas>
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>

  

时间: 2024-11-05 14:45:10

WPF ItemsControl 取消选中item项,滚动条自动跑到该item顶部的问题的相关文章

getresources()与Spinner取消默认选中第一项

getResource() getResource是在有context的前提下才能使用,在android中常在activity中使用它.普通的类一般无法使用.否则会报空指针异常. Spinner默认选中第一项 取消默认选中第一项的方法: spinner.setSelection(0, true); 注意:

UITableView的颜色设置和cell的自动取消选中状态

1.系统默认的颜色设置 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectionStyle = UITableViewCellSelectionStyleBlue; //灰色 cell.selectionStyle = UITableViewCellSelectionStyleGray; 2.自定义颜色和背景设置  改变UITableViewCell选中时背景色: UIColor *colo

WPF RichTextBox滚动条自动滚动实例、文本自动滚动实例

说明:1.后台代码添加测试 数据 2.使用 richTextBox.ScrollToVerticalOffset()方法,滚动竖直方向滚动条位置 3.使用定时器DispatcherTimer,修改页面显示数据 4.自己计算处理,已经滚动的高度位置 Xaml代码: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="205*"/> <ColumnDefinition Width=&qu

WPF ItemsControl ListBox ListView比较

在进行列表信息展示时,WPF中提供多种列表可供选择.这篇博客将对WPF ItemsControl, ListBox, ListView进行比较. 相同点: 1. 这三个控件都是列表型控件,可以进行列表绑定(ItemsSource): 2. 这三个控件均使用ItemsPresenter来展示列表信息: 不同点: 控件层次关系: ItemsControl: System.Object  System.Windows.Threading.DispatcherObject System.Windows.

ListBox之类控件的Item项显示对象的两个属性

wpf项目中,ListBox绑定对象集合,ListBoxItem要显示对象的两个属性,例如:显示员工的工号和姓名. 之前我的做法是在Employee员工类中添加一个"NumAndName",属性,给员工对象的工号属性赋值.姓名属性赋值时,同时给“NumAndName”属性 赋值为“工号”+“姓名”两个属性拼接的字符串,ListBox绑定员工的集合,ListBox的Item绑定"NumAndName"属性,这样就同时显示了工号和姓名. 今天,发现了一个简单的方法,即:

jquery radio 取值 取消选中 赋值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

ExtJS4.2 Grid知识点六:自动选中指定记录、自动选中全部记录、反向选择

本节主要学习ExtJS4.2 Grid自动选中指定记录.自动选中全部记录.反向选择,即在表格Grid加载数据后自动将符合条件的记录行选中,示例图片: 示例代码  /  在线演示 本例是通过监听Grid的afterrender事件来实现自动选择指定记录行,代码如下实现自动选中性别为男性的记录行: 自动选中指定记录代码 'userlist': {     afterrender: function(testGrid){//侦听goodslistview渲染           // 选中所有记录  

iOS uitableViewCell 选中 push后返回 取消选中状态

首先我有一个UITableViewController,其中每个UITableViewCell点击后都会push另一个 ViewController,每次点击Cell的时候,Cell都会被选中,当从push的ViewController返回的时候选中的Cell便会 自动取消选中.后来由于某些原因我把这个UITableViewController改成了UIViewController,之后就产生了一个问题:每 次返回到TableView的时候,之前选中的Cell不能自动取消选中,经过查找得知: U

js 设置多个复选框选中和取消选中

// 设置选中 function setCheckboxClick(obj) { if(obj == null) { $.messager.alert('警告', "请选择要设置选中的项!",'warning'); } // alert(obj.value); var authorityId = obj.value; $.ajax({ type: 'post', url: 'getAuthorityByAuthorityId.action', data: {"authorit