0

Что лучше использовать? Вместо SelectionChanged использовать SelectedItem

private Game _SelectedItem;
public Game SelectedItem
{
    get { return _SelectedItem; }
    set { _SelectedItem = value; OnPropertyChanged(); System.Windows.MessageBox.Show(((Game)value).Creator); }
}

или все таки так

<ListBox ItemsSource="{Binding Games}" Background="#FF292D32" HorizontalContentAlignment="Stretch">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <i:InvokeCommandAction
                Command="{Binding ItemChanged}"
                CommandParameter="{Binding Path=SelectedItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBox}}}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
  • Что лучше использовать? - что значит лучше? – tym32167 Nov 05 '18 at 14:35
  • Ну наверно что правильней для паттерна MVVM использовать. И вообще правильно ли вызывать метод в сеттере свойства – Павел Ериков stand with Russia Nov 05 '18 at 14:40
  • для паттерна MVVM использовать привязки и команды - это норм (другое дело, что вы могли привязаться гораздо проще и без команды). Вызывать в сеттере OnPropertyChanged() - это норм. Вызывать во вьюмодели какие то UI вещи типа диалогового окна - это не норм и вообще неправильно. – tym32167 Nov 05 '18 at 14:44
  • А как проще сделать (мне просто нужно чтоб при смене Item`а вызывался метод куда передавался бы ну допустим Title этого айтема)
  • Я в курсе что в сеттере OnPropertyChanged() вызывать это норм. А другие методы?
  • А как вызывать диалоговое окно по правилам mvvm?
  • – Павел Ериков stand with Russia Nov 05 '18 at 14:50
  • Использовать биндинг к свойству, что то типа <ListBox .... SelectedItem="{Binding SelectedItem}" .... 2) Сеттеры и геттеры по всем рекомендациям должны быть максимально простыми, чем проще - тем лучше. Если вы начнете писать лапшу логики в сеттерах, получите неподдерживаемую кашу в коде 3) Писать спец класс для показа окон, вызывать из модели этот класс
  • – tym32167 Nov 05 '18 at 14:55
  • Так то в 1 варианте у меня так и работает привязка только у меня возник вопрос правильно ли будет если я в сеттер внесу вызов метода Test(((Game)value).Title); 3) а можно ссылку на пример такого класса пожалуйста
  • – Павел Ериков stand with Russia Nov 05 '18 at 14:58