Browse Source

CanScrollHorizontally shouldn't be an attached property.

pull/484/head
Steven Kirk 10 years ago
parent
commit
a6067c994e
  1. 2
      src/Perspex.Controls/Presenters/ScrollContentPresenter.cs
  2. 4
      src/Perspex.Controls/ScrollViewer.cs
  3. 18
      src/Perspex.Controls/TextBox.cs
  4. 2
      src/Perspex.Themes.Default/TextBox.xaml

2
src/Perspex.Controls/Presenters/ScrollContentPresenter.cs

@ -45,7 +45,7 @@ namespace Perspex.Controls.Presenters
/// Defines the <see cref="CanScrollHorizontally"/> property.
/// </summary>
public static readonly StyledProperty<bool> CanScrollHorizontallyProperty =
PerspexProperty.Register<ScrollContentPresenter, bool>("CanScrollHorizontally", true);
ScrollViewer.CanScrollHorizontallyProperty.AddOwner<ScrollContentPresenter>();
private Size _extent;
private Size _measuredExtent;

4
src/Perspex.Controls/ScrollViewer.cs

@ -17,8 +17,8 @@ namespace Perspex.Controls
/// <summary>
/// Defines the <see cref="CanScrollHorizontally"/> property.
/// </summary>
public static readonly AttachedProperty<bool> CanScrollHorizontallyProperty =
PerspexProperty.RegisterAttached<ScrollViewer, Control, bool>(nameof(CanScrollHorizontally), true);
public static readonly StyledProperty<bool> CanScrollHorizontallyProperty =
PerspexProperty.Register<ScrollViewer, bool>(nameof(CanScrollHorizontally), true);
/// <summary>
/// Defines the <see cref="Extent"/> property.

18
src/Perspex.Controls/TextBox.cs

@ -26,6 +26,9 @@ namespace Perspex.Controls
public static readonly StyledProperty<bool> AcceptsTabProperty =
PerspexProperty.Register<TextBox, bool>("AcceptsTab");
public static readonly DirectProperty<TextBox, bool> CanScrollHorizontallyProperty =
PerspexProperty.RegisterDirect<TextBox, bool>("CanScrollHorizontally", o => o.CanScrollHorizontally);
// TODO: Should CaretIndex, SelectionStart/End and Text be direct properties?
public static readonly StyledProperty<int> CaretIndexProperty =
PerspexProperty.Register<TextBox, int>("CaretIndex", validate: ValidateCaretIndex);
@ -68,6 +71,7 @@ namespace Perspex.Controls
public bool Equals(UndoRedoState other) => ReferenceEquals(Text, other.Text) || Equals(Text, other.Text);
}
private bool _canScrollHorizontally;
private TextPresenter _presenter;
private UndoRedoHelper<UndoRedoState> _undoRedoHelper;
@ -80,12 +84,8 @@ namespace Perspex.Controls
public TextBox()
{
var canScrollHorizontally = this.GetObservable(TextWrappingProperty)
.Select(x => x == TextWrapping.NoWrap);
Bind(
ScrollViewer.CanScrollHorizontallyProperty,
canScrollHorizontally,
BindingPriority.Style);
.Select(x => x == TextWrapping.NoWrap)
.Subscribe(x => CanScrollHorizontally = x);
var horizontalScrollBarVisibility = this.GetObservable(AcceptsReturnProperty)
.Select(x => x ? ScrollBarVisibility.Auto : ScrollBarVisibility.Hidden);
@ -109,6 +109,12 @@ namespace Perspex.Controls
set { SetValue(AcceptsTabProperty, value); }
}
public bool CanScrollHorizontally
{
get { return _canScrollHorizontally; }
private set { SetAndRaise(CanScrollHorizontallyProperty, ref _canScrollHorizontally, value); }
}
public int CaretIndex
{
get { return GetValue(CaretIndexProperty); }

2
src/Perspex.Themes.Default/TextBox.xaml

@ -28,7 +28,7 @@
</TextBlock.IsVisible>
</TextBlock>
<ScrollViewer CanScrollHorizontally="{TemplateBinding (ScrollViewer.CanScrollHorizontally)}"
<ScrollViewer CanScrollHorizontally="{TemplateBinding CanScrollHorizontally}"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}">
<Panel>

Loading…
Cancel
Save