Привет, у меня есть список, и я хочу, чтобы внешние кнопки прокручивали список. Как я могу добиться этого. спасибо за помощь и примеры.WPF C# Listbox внешние кнопки прокрутки
ответ
Добавить обработчики для кнопок мыши:
private void buttonUp_Click(object sender, RoutedEventArgs e) {
if (listBox1.SelectedIndex > 0)
listBox1.SelectedIndex--;
listBox1.ScrollIntoView(listBox1.SelectedItem);
}
private void buttonDown_Click(object sender, RoutedEventArgs e) {
if (listBox1.SelectedIndex < listBox1.Items.Count - 1)
listBox1.SelectedIndex++;
listBox1.ScrollIntoView(listBox1.SelectedItem);
}
XAML
<Window x:Class="WpfApplication36.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="479" Width="385">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<ListBox Name="lstProducts"
DisplayMemberPath="ModelName"
IsSynchronizedWithCurrentItem="True"
ScrollViewer.VerticalScrollBarVisibility="Hidden">
</ListBox>
<Border Grid.Row="1"
Padding="5"
Margin="0,5,0,5"
Background="LightSteelBlue">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Margin="7">Model Number:</TextBlock>
<TextBox Margin="5"
Grid.Column="1"
Text="{Binding Path=ModelNumber}"></TextBox>
<TextBlock Margin="7"
Grid.Row="1">Model Name:</TextBlock>
<TextBox Margin="5"
Grid.Row="1"
Grid.Column="1"
Text="{Binding Path=ModelName}"></TextBox>
<TextBlock Margin="7"
Grid.Row="2">Unit Cost:</TextBlock>
<TextBox Margin="5"
Grid.Row="2"
Grid.Column="1"
Text="{Binding Path=UnitCost}"></TextBox>
<TextBlock Margin="7,7,7,0"
Grid.Row="3">Description:</TextBlock>
<TextBox Margin="7"
Grid.Row="4"
Grid.Column="0"
Grid.ColumnSpan="2"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Visible"
Text="{Binding Path=Description}"></TextBox>
</Grid>
</Border>
<Grid Grid.Row="2">
<StackPanel Orientation="Horizontal">
<Button Name="cmdPrev"
Click="cmdPrev_Click"><</Button>
<TextBlock Margin="5,0,5,0"
Name="lblPosition"
VerticalAlignment="Center"></TextBlock>
<Button Name="cmdNext"
Click="cmdNext_Click">></Button>
</StackPanel>
</Grid>
</Grid>
Код
namespace WpfApplication36{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private ICollection<Product> products;
private ListCollectionView view;
private void cmdNext_Click(object sender, RoutedEventArgs e)
{
view.MoveCurrentToNext();
}
private void cmdPrev_Click(object sender, RoutedEventArgs e)
{
view.MoveCurrentToPrevious();
}
private void lstProducts_SelectionChanged(object sender, RoutedEventArgs e)
{
// view.MoveCurrentTo(lstProducts.SelectedItem);
}
private void view_CurrentChanged(object sender, EventArgs e)
{
lblPosition.Text = "Record " + (view.CurrentPosition + 1).ToString() +
" of " + view.Count.ToString();
cmdPrev.IsEnabled = view.CurrentPosition > 0;
cmdNext.IsEnabled = view.CurrentPosition < view.Count - 1;
}
public Window1()
{
InitializeComponent();
products = AddProduct() ;
this.DataContext = products;
view = (ListCollectionView)CollectionViewSource.GetDefaultView(this.DataContext);
view.CurrentChanged += new EventHandler(view_CurrentChanged);
lstProducts.ItemsSource = products;
}
private Collection<Product> AddProduct()
{
Collection<Product> test = new Collection<Product>();
Product prod=null;
prod=new Product();
prod.ModelName ="BMW";
prod.ModelNumber ="Q234";
prod.Description="BMWWWWWWWWWWWW";
prod.UnitCost="$3333333";
test.Add(prod);
prod = new Product();
prod.ModelName = "BMW11";
prod.ModelNumber = "Q234111";
prod.Description = "BMWWbbb";
prod.UnitCost = "$3333333";
test.Add(prod);
prod = new Product();
prod.ModelName = "BM3W";
prod.ModelNumber = "Q233334";
prod.Description = "BMWb33bbb";
prod.UnitCost = "$3333333";
test.Add(prod);
return test;
}
}
public class Product
{
private string modelNumber;
public string ModelNumber
{
get {return modelNumber; }
set{ modelNumber=value; }
}
private string modelName;
public string ModelName
{
get {return modelName; }
set{ modelName=value ;}
}
private string unitCost;
public string UnitCost
{
get { return unitCost; }
set { unitCost = value; }
}
private string description;
public string Description
{
get { return description; }
set { description = value; }
}
}
}
Heres my Code guys! Спасибо за помощь
private void btnArrowUp_Click(object sender, RoutedEventArgs e) {
if(lbZones.SelectedIndex > 0) {
lbZones.SelectedIndex--;
lbZones.ScrollIntoView(lbZones.SelectedIndex);
}
}
private void btnArrowDown_Click(object sender, RoutedEventArgs e) {
if(lbZones.SelectedIndex < lbZones.Items.Count - 1) {
lbZones.SelectedIndex++;
lbZones.ScrollIntoView(lbZones.SelectedIndex);
}
}
И ЭРВО МОФ
<Button Template="{StaticResource EmptyButton}" Name="btnArrowUp" Click="btnArrowUp_Click">
<Canvas x:Name="ArrowUp" HorizontalAlignment="Left" VerticalAlignment="Top" Width="101" Height="72" ClipToBounds="True">
<Image x:Name="up" Width="100" Height="50" Source="pil 3_Images\Image.png" Canvas.Left="0" Canvas.Top="10.543"/>
</Canvas>
</Button>
Обычно вам не требуется холст, чтобы поместить изображение в кнопку. Так оно работает наконец? – majocha
Прошу прощения, но это не прокрутка вниз или вверх. Есть ли другие способы? – Tan
вы допустили ошибку в своем коде. lbZones.ScrollIntoView (lbZones.SelectedIndex); должен быть lbZones.ScrollIntoView (lbZones.SelectedItem); Опубликовать остальную часть вашего XAML не только кнопку. У меня возникло ощущение, что может быть больше проблем. Также вы можете создать упрощенную упрощенную выборку без пользовательских стилей, заставить ее работать, а затем работать с ней. – majocha
- 1. WPF ListBox - Обнаружение кнопки прокрутки вверх/вниз Нажмите
- 2. Управление ListBox прокрутки поведение
- 3. C# WPF ListBox Chat
- 4. WPF Listbox с более широкими полосами прокрутки
- 5. WPF ListBox автоматический запуск и остановка прокрутки
- 6. WPF ListBox генерирует элементы как пользовательские прокрутки
- 7. Как остановить WPF Listbox от прокрутки
- 8. Событие прокрутки ListBox в MVVM WPF
- 9. WPF ListBox: вертикальная полоса прокрутки и фокус
- 10. Проблема полосы прокрутки в WPF ListBox
- 11. WPF Пользовательские кнопки ниже ListBox Элементы
- 12. Сортировка WPF ListBox при нажатии кнопки?
- 13. C# WPF: Найти наибольшее значение с помощью кнопки в ListBox
- 14. C# WPF listBox вертикальное выравнивание
- 15. WPF C# Refresh/Rebind Listbox
- 16. C# WPF Metro Style Listbox
- 17. C# WPF ListBox для строки
- 18. C# - Добавление кнопки внутри ListBox
- 19. WPF Listbox прокрутка вниз
- 20. WPF ListBox фиксированная ширина
- 21. ListBox в вопросе прокрутки TabControl
- 22. C# asp: ListBox скрыть вертикальную полосу прокрутки
- 23. Групповая панель WPF ListBox
- 24. WPF пола каскадной ListBox
- 25. WPF Dropdown ListBox
- 26. WPF переопределение ScrollVIewer в Listbox
- 27. WPF usercontrol и внешние события
- 28. WPF Listbox multi selection
- 29. WPF анимация в ListBox
- 30. Обнаружение прокрутки события ListBox?
что вы имеете в виду внешними? – dada686
Как у вас есть список слева. с множеством вертикальных предметов. то на правой стороне я хочу 2 кнопки. одна кнопка вниз и кнопка вверх. когда я нажимаю на эти кнопки, списки просматривают вниз или вверх. – Tan