1

UserControl DataGridXAML:

<DataGrid x:Name="NamingConventionDataGrid" Width="{Binding ElementName=toolbar, Path=ActualWidth}" MinHeight="100"
     HorizontalAlignment="Left" DockPanel.Dock="Bottom"
     VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="auto" 
     CanUserResizeRows="False" CanUserAddRows="False" CanUserSortColumns="True" CanUserDeleteRows="False"
     CanUserReorderColumns="False" CanUserResizeColumns="False" Background="White" BorderThickness="1"
     VerticalGridLinesBrush="{StaticResource RowGrayBrush}" HorizontalGridLinesBrush="{StaticResource RowGrayBrush}"
     RowBackground="White" AlternatingRowBackground="{StaticResource RowGrayBrush}" AlternationCount="2"
     ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
     SelectedItem="{Binding SelectedName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
     AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow"
     RowHeaderWidth="15" RowHeaderStyle="{StaticResource DataGridRowHeaderStyle}" 
     ItemsSource="{Binding ReferenceValues, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
     MaxHeight="230" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" >

ViewModelコード:

 ReferenceValues = tempRefs;

 SelectedName = ReferenceValues.FirstOrDefault();
 _view.NamingConventionDataGrid.SelectedItem = SelectedName;
 _view.NamingConventionDataGrid.UpdateLayout();
 _view.NamingConventionDataGrid.ScrollIntoView(SelectedName);

オブジェクト{Binding}を使用してを呼び出すScrollIntoView()と、SelectedItemオブジェクトが選択されますが(WPFアプリケーションの他のものが変更されるため、これはわかります)、オブジェクトがある場所までスクロールせず、SelectedItemオブジェクトは次のように強調表示されません。をクリックしますDataGridSelectedItemある場所までスクロールし、ユーザーがアイテムまでスクロールして行をクリックしたかのように強調表示できるコードがどこかにありませんか?

4

2 に答える 2

1

問題は、DataGridが、表示されているアイテムと各方向にいくつかのアイテムのコンテナーのみを作成していることが原因だと思います。

次のように、DataGridのIsVirtualizingプロパティを設定してみてください。

VirtualizingStackPanel.IsVirtualizing="False" 

これを行うまで、複数選択とスクロールのサポートに関して同様の問題が発生していました。

于 2012-11-02T19:17:21.407 に答える
0

Bindingfrom_viewオブジェクトをにマップするように設定するのを忘れていましたUserControl

以下のコードを追加すると、すべてが再び機能しました。

 model._view = _view.NamingConventionControl;
于 2012-11-02T19:29:14.083 に答える