AnimatedStackPanel, command binding

Views for WPF Forum

Posted 8 years ago by Chris Baker
Version: 11.1.0541
Avatar
AnimatedStackPanel

How do I move the panel left and right? I would like to do this within XAML

I have tried
<ItemsPanelTemplate>
<views:AnimatedStackPanel
x:Name="AnimationSP"
Loaded="AnimationSP_Loaded">
</views:AnimatedStackPanel>
</ItemsPanelTemplate>

public View(ViewModel viewModel)
{
InitializeComponent();

ActiproSoftware.Windows.Controls.Views.AnimatedStackPanel test = AnimationSP
}

And it does not work.


This does
private void AnimationSP_Loaded(object sender, RoutedEventArgs e)
{
animationSP = (AnimatedStackPanel)sender;
}

private void ImageButton_Click(object sender, RoutedEventArgs e)
{
animationSP.LineLeft();
}

Both are not very nice. I looked at your commanding example with Books but cannot get this work. Can you please help?

We are not a customer yet, but looking into buying if this does what we need.

Thanks in advance
Chris

Comments (3)

Posted 8 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Chris,

In nearly all WPF controls scrolling support is provided by using a ScrollViewer. Some controls, like ListBox have the ScrollViewer included in their ControlTemplate, so you don't have to explictly use it.

In addition, there are two types of scrolling: physical and logical. Physical is basically pixel-by-pixel scrolling. Logical scrolling allows you to provide customized scrolling. In the case of StackPanel (and our AnimatedStackPanel), it will scroll item-by-item in the orientation direction, and pixel-by-pixel in the other direction.

Panels do not scroll by themselves, even if they support logical scorlling. They must still be wrapped in a ScrollViewer that has CanContentScroll set to true.

It's hard to tell what the issue can be based on the code you provided. If you can please put together a small sample project that reproduces your issue and email it over then we can take a closer look. Be sure to remove any executables or change the extension of the zip file to ensure it gets past our email filters.


Actipro Software Support

Posted 8 years ago by Chris Baker
Avatar
Thanks for the reply, I will try to put an example together when I get some more time. Maybe if I ask the question in a different way for now.

How do I call LineLeft() and LineRight() from code behind?
You expose these methods on the AnimatedStackPanel so I should be able to call then from code?

Thanks
Chris
Posted 8 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Chris,

I apolygize, I thought by "Both are not very nice" you meant that there was a visual artifact. Unfortunately, you'd have to traverse the visual tree to get at the AnimatedStackPanel. But really you can just look for the ScrollViewer, as this is a more generic approach. So assuming you have this:
<ListBox x:Name="listBox">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate> 
            <views:AnimatedStackPanel /> 
        </ItemsPanelTemplate> 
    </ListBox.ItemsPanel>
</ListBox>
Then you could access it like:
private void ImageButton_Click(object sender, RoutedEventArgs e) { 
    var scrollViewer = VisualTreeHelperExtended.GetFirstDescendant(this.listBox, typeof(ScrollViewer)) as ScrollViewer;
    if (scrollViewer != null)
        scrollViewer.LineLeft(); 
}


Actipro Software Support

The latest build of this product (v2019.1 build 0681) was released 1 month ago, which was after the last post in this thread.

Add Comment

Please log in to a validated account to post comments.