* решено *
Я наконец-то решил, что это «грязный» код в коде позади, хотя MVVM мог бы быть чище и приятнее
Наблюдаемый материал коллекции все еще выполняется во ViewModel ...
public ViewModelLocator VML = new ViewModel.ViewModelLocator();
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
VML.MainMatch.Add();
dataGrid.SelectedIndex = VML.MainMatch.Matches.Count - 1;
dataGrid.ScrollIntoView(VML.MainMatch.Matches, dataGrid.Columns[0]);
}
У меня есть представление с сеткой данных и кнопкой, подключенной к команде relay для добавления записей в наблюдаемую коллекцию (источник данных сетки данных), отлично работает следующее:
Вид:
<Button x:Name="btnAdd" Content="{Binding Resource.btnAdd, Source={StaticResource CustomLocStrings}}" Width="100" Command="{Binding AddCommand, Mode=OneWay}" Margin="5" HorizontalAlignment="Center" IsEnabled="{Binding IsLimitedUser, Converter={StaticResource TrueToFalseConverter}}"/>
ViewModel:
AddCommand = new RelayCommand(() => Add());
private void Add()
{
game _game = new game();
_game.recid = 1;
_game.teamid = GlobalVariables.CurrentUser.teamid;
if (this.games != null)
{
this.games.Add(new gameViewModel(_game));
}
else
{
var _games = new List<gameViewModel>();
_games.Add(new gameViewModel(_game));
this.games = new ObservableCollection<gameViewModel>(_gamees);
}
Проблема в том, что строка добавляется в нижней части таблицы данных, вне представления пользователей.
Он должен прокрутить вниз, чтобы увидеть новую запись.
Я хочу, чтобы сетка автоматически прокручивала обзор новой записи.
Я нашел подобную проблему здесь (http://forums.lhotka.net/forums/p/9086/43212.aspx):, но не смог перевести ее в мою ситуацию:
Я пробовал это с EventTocCommand
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding Path=AddCommand}" PassEventArgsToCommand="True" CommandParameter="{Binding ElementName=dataGrid}"/>
</i:EventTrigger>
А потом
RelayCommand<EventArgs> AddCommand = new RelayCommand<EventArgs>(Add);
но когда я нажимаю, ничего не происходит, я подозреваю, что мой параметр команды неверен ..
Надеюсь, у кого-то есть решение, так как мой пользовательский интерфейс на самом деле не «удобный», как сейчас ..
Заранее спасибо,
Mike