【问题标题】:List scrolls horizontally when item is clicked单击项目时列表水平滚动
【发布时间】:2015-11-25 18:30:08
【问题描述】:

我的TreeView 和DataGrid 有问题。问题是,每当我单击TreeView(或DataGrid)中的一个项目时,我猜,视图会水平向右滚动,以使其更明显。下面是我的TreeView 的一些图片:

项目点击前:

项目点击后

我确定我可以禁用水平滚动条,但我仍然希望用户可以选择滚动,而不是在单击项目时自动滚动。

非常感谢您对此提供的任何帮助,为了完整起见,我在下面附上了我的 TreeView 代码:

<TreeView x:Name="TreeView" 
          ItemsSource="{Binding Path=FileStubsView}"
          SelectedItemChanged="TreeView_OnSelectedItemChanged"
          common:MultipleSelectTreeView.PreviewMouseDoubleClick="HandleTreeItemDoubleClick"
          Tag="{Binding DataContext,RelativeSource={RelativeSource Mode=Self}}"
          Grid.Row="1" 
          Grid.Column="0" 
          Margin="0,2,0,0" 
          TreeViewItem.Expanded="TreeViewItem_Expanded" 
          TreeViewItem.Collapsed="TreeViewItem_Collapsed" >

【问题讨论】:

标签: c# wpf scroll treeview


【解决方案1】:

这是一个从answer 派生的有效解决方案question:

代码隐藏

public partial class MainWindow : Window
{
    public List<Item> Items
    {
        get
        {
            return new List<Item>()
            {
                new Item(),
                new Item(),
                new Item(),
                new Item(),
            };
        }
    }
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
    }

    private void TreeViewItem_CancelRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
    {
        e.Handled = true;
    }
}

型号

public class Item
{
    public string Text
    {
        get
        {
            return "Itemaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
        }
    }

    public List<Item> Items
    {
        get
        {
            return new List<Item>()
            {
                new Item(),
                new Item(),
                new Item(),
            };
        }
    }
}

查看

<Grid Width="200">
    <TreeView ItemsSource="{Binding Items}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Items}">
                <TextBlock Text="{Binding Text}"/>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
        <TreeView.ItemContainerStyle>
            <Style TargetType="{x:Type TreeViewItem}">
                <EventSetter Event="Control.RequestBringIntoView"
                             Handler="TreeViewItem_CancelRequestBringIntoView" />
            </Style>
        </TreeView.ItemContainerStyle>
    </TreeView>
</Grid>

输出

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多