Переместите элементы списка вместо «панели выбора» - PullRequest
2 голосов
/ 07 июля 2010

1-Возможно ли перемещение элементов списка вместо «панели выбора».Таким образом, панель выбора имеет статическое положение, но элементы будут перемещаться.

то, что я пытаюсь достичь, это что-то вроде полосы прокрутки внизу этого изображения: http://i.afterdawn.com/storage/pictures/plex_netflix_addon_3.png

2-это Listbox с горизонтальной ориентацией, соответствующий инструмент для реализации программы просмотра миниатюр, такой какв примере?

3-Я хочу, чтобы он был анимирован в будущих обновлениях?возможный?

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

Ниже кода реализуются 1 и 2. Элемент в середине горизонтального списка всегда выбран. Для того чтобы внешний вид списка выглядел хорошо, нужно, чтобы стиль отображался как, например, использование непрозрачности, чтобы показать, какие элементы отображаются, а какие нет.

XAML:

<Window x:Class="FlowListTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
    <ListBox  
        ItemsSource="{Binding Path=Items}"
        ScrollViewer.HorizontalScrollBarVisibility="Auto"
        ScrollViewer.ScrollChanged="OnScrollChanged"
        SelectionChanged="OnSelectionChanged">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border CornerRadius="10" BorderBrush="Red" BorderThickness="2">
                    <TextBlock Text="{Binding}" Margin="5" Width="20" Height="100"/>
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Window>

Код:

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;

namespace FlowListTest
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            DataContext = this;
        }

        public IEnumerable<string> Items
        {
            get
            {
                for (int i = 0; i < 100; i++)
                {
                    yield return i.ToString();
                }
            }
        }

        private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            (sender as ListBox).SelectedIndex = _selectedIndex;
        }

        private void OnScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            _selectedIndex = (int)(e.HorizontalOffset + Math.Truncate(e.ViewportWidth / 2));
            (sender as ListBox).SelectedIndex = _selectedIndex;
        }

        private int _selectedIndex;
    } 
}
0 голосов
/ 07 июля 2010

Проверьте компонент ElementFlow в FluidKit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...