单击项目时列表水平滚动
List scrolls horizontally when item is clicked
我的 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" >
这是一个源自 answer in this 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>
输出
我的 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" >
这是一个源自 answer in this 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>