Да, это плохая практика, особенно с точки зрения MVVM .
Извлечение всей бизнес-логики в класс ServiceViewModel , в View просто установите экземпляр ViewModel вDataContext:
public MainWindow()
{
InitializeComponent();
this.DataContext = new ServiceViewModel();
}
Если у вас есть другой класс / окно, которое создает это окно, вы должны установить ViewModel внутри него.Например:
MyWindow childWindow = new MyWindow();
childWindow.DataContext = new ServiceViewModel();
Так что теперь вы можете увидеть MVVM в действии, в файле MainWindow XAML вы можете использовать привязки, как показано ниже:
<!-- Considering that ServiceViewModel has
public string ServiceName property
-->
<TextBlock Text="{Binding ServiceName}" />
<!-- Considering that ServiceViewModel has
public List<ConsoleData> DataItems property
-->
<DataGrid ItemsSource="{Binding DataItems}" />
Таким образом, ваша логика остается в ViewModel иотделен от View.
PS:
Я бы предложил использовать ObservableCollection<ConsoleData>
для списка ConsoleData, преимущества: ( MSDN )
ObservableCollection Class
Представляет динамический сбор данных, который предоставляет уведомления, когда элементы добавляются, удаляются или обновляется весь список.