Défilement de la souris ne fonctionne pas dans un rouleau spectateur avec wpf grille de données supplémentaires et des éléments d'INTERFACE utilisateur

Je suis à essayer de comprendre comment obtenir le défilement de la souris de travail sur une fenêtre wpf avec un scrollviewer et un datagrid en son sein. WPF et C# code est ci-dessous

<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Border Name="DataGridBorder" BorderThickness="2"  Margin="1" CornerRadius="4" BorderBrush="#FF080757">
<dg:DataGrid AutoGenerateColumns="False" Name="ValuesDataGrid" 
BorderThickness="0" CanUserResizeColumns="True" FontWeight="Bold" HorizontalScrollBarVisibility="Auto" 
CanUserReorderColumns="False" IsReadOnly="True" IsTextSearchEnabled="True" AlternationCount="2"
SelectionMode="Extended" GridLinesVisibility="All"                
HeadersVisibility="Column" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" CanUserSortColumns="False"
RowDetailsVisibilityMode="Collapsed"  SelectedIndex="0"
RowStyle="{StaticResource CognitiDataGridRowStyle}"
>
<dg:DataGrid.Columns>
<dg:DataGridTemplateColumn Header="Title" >
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding Path=Name}" FontWeight="Normal"  />
</StackPanel>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
</dg:DataGrid.Columns>
</dg:DataGrid>
</Border>
</Grid>
<Button Grid.Row="1" Height="90" >hello world</Button>
</Grid>
</ScrollViewer>

et le code C# est comme suit

 public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
initialize();
}
public void initialize()
{
ObservableCollection<MyObject> testList = new ObservableCollection<MyObject>();
for (int i = 0; i < 20; i++)
{
MyObject my = new MyObject("jack " + i);
testList.Add(my);
}
ValuesDataGrid.ItemsSource = testList;
}
}
public class MyObject
{
public string Name { get; set; }
public MyObject(string name)
{
Name = name;
}
}

Le problème, je suis confronté est que lors de l'utilisation de la souris pour faire défiler, il fonctionne très bien quand il est sur le bouton, mais dès que je bouge le pointeur de la souris sur la grille et essayez de faire défiler, rien ne se passe. Je suis en mesure de déplacer la barre de défilement de la scrollviewer directement. Je suis encore un wpf novice sorte que toute aide sur la façon d'obtenir le défilement de la souris pour le travail sur le contrôle datagrid serait appréciée. Je devine il devrait être assez facile solution pour cela, mais je n'ai pas été en mesure de le comprendre

  • J'ai exactement le même problème, cependant les solutions ci-dessous ne fonctionnent pas très bien dans une application MVVM. Notre architecte ne veux pas de code dans les points de vue, seulement Xaml ou de Comportements.
  • Salut Kolky, je sais que cette réponse est probablement trop tard pour vous, près de 6 ans maintenant, mais il sera peut-être utile pour quelqu'un d'autre dans une situation similaire. Normalement, l'INTERFACE utilisateur logique de type de ce genre est acceptable en utilisant le pattern MVVM, telles que l'utilisation du code-behind de la classe. Voici un lien vers un article MSDN sur ça: msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx
InformationsquelleAutor user352093 | 2010-05-27