Не работает автопрокрутка (вертикальная) при отключеном автосдвиге(горизонтальной прокрутки при выделении с длинным названием item) горизонтальной панели.
Конфликт e.Handled = true; и item.BringIntoView
Как исправить конфликт BringIntoView и e.Handled ?
EventSetter Event="RequestBringIntoView" Handler="TreeViewItem_RequestBringIntoView"/>
<Setter Property="localModels:TreeViewItemBehavior.IsBroughtIntoViewWhenSelected" Value="True" />
private void TreeViewItem_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
Делаю всё как описано в примере.
https://stackoverflow.com/questions/41589389/c-sharp-wpf-errorthe-name-treeviewitembehavior-does-not-exist-in-the-namespac
Но у меня не работает автопрокрутка scroll при выборе Item .
xmlns:localModels="clr-namespace:ChartsDisplayer2016.Core.DataSelector.Models;assembly=ModelAssemblyName"
<Grid >
<TreeView x:Name="tree" >
<TreeView.Resources>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" >
<Style.Resources>
</Style.Resources>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="localModels:TreeViewItemBehavior.IsBroughtIntoViewWhenSelected" Value="True" />
TreeViewItemBehavior
public static class TreeViewItemBehavior
{
#region IsBroughtIntoViewWhenSelected
public static bool GetIsBroughtIntoViewWhenSelected(TreeViewItem treeViewItem)
{
return (bool)treeViewItem.GetValue(IsBroughtIntoViewWhenSelectedProperty);
}
public static void SetIsBroughtIntoViewWhenSelected(
TreeViewItem treeViewItem, bool value)
{
treeViewItem.SetValue(IsBroughtIntoViewWhenSelectedProperty, value);
}
public static readonly DependencyProperty IsBroughtIntoViewWhenSelectedProperty =
DependencyProperty.RegisterAttached(
"IsBroughtIntoViewWhenSelected",
typeof(bool),
typeof(TreeViewItemBehavior),
new UIPropertyMetadata(false, OnIsBroughtIntoViewWhenSelectedChanged));
static void OnIsBroughtIntoViewWhenSelectedChanged(
DependencyObject depObj, DependencyPropertyChangedEventArgs e)
{
TreeViewItem item = depObj as TreeViewItem;
if (item == null)
return;
if (e.NewValue is bool == false)
return;
if ((bool)e.NewValue)
item.Selected += OnTreeViewItemSelected;
else
item.Selected -= OnTreeViewItemSelected;
}
static void OnTreeViewItemSelected(object sender, RoutedEventArgs e)
{
// Only react to the Selected event raised by the TreeViewItem
// whose IsSelected property was modified. Ignore all ancestors
// who are merely reporting that a descendant's Selected fired.
if (!Object.ReferenceEquals(sender, e.OriginalSource))
return;
TreeViewItem item = e.OriginalSource as TreeViewItem;
if (item != null)
item.BringIntoView();
e.Handled = true;
}
#endregion // IsBroughtIntoViewWhenSelected
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости