Bonjour, j'ai une liste et je veux que les boutons externes défilent dans la liste. Comment puis-je obtenir cela. merci pour l'aide et les exemples.WPF C# Boutons de défilement externes Listbox
Répondre
Ajouter les gestionnaires pour les clics de bouton:
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);
}
Ce n'est pas un défilement, mais la sélection d'éléments (haut ou bas) pour laisser le contrôle se déplacer lui-même (si nécessaire). – RvdK
C'est une idée générale de le faire. Quoi qu'il en soit, j'ai ajouté du code de défilement à mon exemple. – majocha
soory mais cela ne semble pas fonctionner. Y a-t-il d'autres moyens? – Tan
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>
code
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 mon code les gars! Merci pour l'aide
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);
}
}
Et voici le WPF
<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>
Vous n'avez généralement pas besoin de toile pour mettre l'image dans un bouton. Alors, ça marche enfin? – majocha
Non désolé mais il ne défile pas vers le haut ou vers le bas. Y a-t-il d'autres moyens? – Tan
vous avez fait une erreur dans votre code. lbZones.ScrollIntoView (lbZones.SelectedIndex); devrait être lbZones.ScrollIntoView (lbZones.SelectedItem); afficher le reste de votre XAML non seulement le bouton. J'ai le sentiment qu'il pourrait y avoir plus de problèmes. Vous pouvez également créer un échantillon simplifié dépouillé sans styles personnalisés, le faire fonctionner et ensuite travailler à partir de celui-ci. – majocha
- 1. Listbox Personnalisation de la barre de défilement dans WPF
- 2. WPF défilement Listbox vers le bas
- 3. ListBox, VirtualizingStackPanel et défilement lisse dans WPF
- 4. WPF ListBox SelectedItem est parfois visible (défilement est désynchronisé)
- 5. WPF Commandes Boutons ListBoxItems
- 6. WPF ListBox contrôle le défilement horizontal dans le code
- 7. WPF défilement automatique vers des éléments dans un ListBox
- 8. WPF Listbox défilement automatique tout en faisant glisser
- 9. WPF ListBox avec une ListBox - Virtualisation et défilement de l'interface utilisateur
- 10. WPF ListBox Largeur/MaxWidth
- 11. C#: Listbox Contextmenu pour Listboxitems (WPF)
- 12. WP7 Empêcher le défilement ListBox
- 13. WPF Listbox défiler wont verticale
- 14. Listbox avec plusieurs colonnes WPF
- 15. WPF listbox item not wordwrapping
- 16. WPF usercontrol et les événements externes
- 17. Faire défiler un VirtualizingStackPanel de ListBox avec les boutons
- 18. Animation WPF sur un ListBox
- 19. WPF barre de défilement
- 20. WPF: Listbox, valueconverter
- 21. WPF: ListBox désélectionnant
- 22. WPF Databound Listbox
- 23. Listbox MousedoubleCliquez sur WPF
- 24. WPF-ListBox-MultiBind Howto
- 25. WPF ListBox Databinding
- 26. WPF ListBox + Binding + IDataErrorInfo =?
- 27. WPF, ObservableCollection et listbox
- 28. WPF listbox empty datatemplate
- 29. WPF ListBox OnScroll Event
- 30. WPF ListBox Binding ItemsSource
qu'entendez-vous par externe? – dada686
Comme un avoir une liste sur le côté gauche. avec de nombreux articles verticaux. puis sur le côté droit je veux 2 boutons. un bouton bas et un bouton haut. Lorsque je clique sur ce bouton, les listviews défilent vers le haut ou vers le bas. – Tan