Скажите как правильно подключить две ViewModel

183
02 января 2019, 14:20

Всем здравствуйте. Есть у меня TabControl с двумя вкладками. На первой вкладке один набор функционала, он функционал, привязан к ViewModel, хочу на второй вкладке подключить вторую ViewModel, отличную от первой. Но пробую сделать так. Это код View, тут я подключаю datacontext. При такой конструкции, работает только вторая ViewModel

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Loaded+=MainViewLoaded; // первая ViewModel
            Loaded+=MainViewModelTabData; // вторая ViewModel
        }
        private void MainViewModelTabData(object sender, RoutedEventArgs e)
        {
           DataContext=new MainViewModelTabData();
        }

        private void MainViewLoaded(object sender, RoutedEventArgs e)
        {
           DataContext=new MainViewModel();
        }

    }

А вот сама разметка.

<Window x:Class="wpf_arcer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:wpf_arcer"
        xmlns:customObjects="clr-namespace:wpf_arcer.ModelView"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TabControl HorizontalAlignment="Left" Height="400" Margin="10,10,0,0" VerticalAlignment="Top" Width="772">
            <TabItem Name="Parse" Header="Парсинг">
                <Grid Background="#FFE5E5E5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="62*"/>
                        <ColumnDefinition Width="17*"/>
                        <ColumnDefinition Width="11*"/>
                        <ColumnDefinition Width="9*"/>
                        <ColumnDefinition Width="663*"/>
                    </Grid.ColumnDefinitions>
                    <Grid HorizontalAlignment="Left" Height="351" Margin="10,10,0,0" VerticalAlignment="Top" Width="725" Grid.ColumnSpan="5">
                        <Label Content="Список категорий" HorizontalAlignment="Left" Height="23" Margin="27,13,0,0" VerticalAlignment="Top" Width="100"/>
                    </Grid>
                    <Button Command="{Binding CommandToRun}" Content="Получить список категорий" HorizontalAlignment="Left" Height="35" Margin="28,326,0,0" VerticalAlignment="Top" Width="155" Grid.Column="4"/>
                    <Label Content="Глубина парсинга" HorizontalAlignment="Left" Height="25" Margin="297,47,0,0" VerticalAlignment="Top" Width="106" Grid.Column="4"/>
                    <TextBox HorizontalAlignment="Left" Height="25" Margin="436,47,0,0" TextWrapping="Wrap" Text="{Binding NumberPages, Mode=TwoWay}" VerticalAlignment="Top" Width="67" Grid.Column="4"/>
                    <Button  Command="{Binding CommandToPars}" Content="Парсить выбранные страницы" HorizontalAlignment="Left" Height="35" Margin="368,326,0,0" VerticalAlignment="Top" Width="188" Grid.Column="4"/>
                    <customObjects:CustomListBox x:Name="ListBox"  SelectionMode="Multiple" ItemsSource="{Binding Rubrikses, Mode=TwoWay}"  SelectedItemsList="{Binding SelectedPlanshets, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.ColumnSpan="5" Margin="0,47,449,55" ></customObjects:CustomListBox>
                </Grid>
            </TabItem>
            <TabItem Name="Data" Header="Данные">
                <Grid Background="#FFE5E5E5">
                    <Grid HorizontalAlignment="Left" Height="361" Margin="10,10,0,0" VerticalAlignment="Top" Width="722">
                        <DataGrid ItemsSource="{Binding Data}" HorizontalAlignment="Left" Height="237" Margin="31,47,0,0" VerticalAlignment="Top" Width="648"/>
                        <Button Command="{Binding CommandGetDataFromBase}" Content="Получить данные из базы" HorizontalAlignment="Left" Height="27" Margin="227,301,0,0" VerticalAlignment="Top" Width="249"/>
                        <Label Content="Поиск  в базе" HorizontalAlignment="Left" Height="32" Margin="31,8,0,0" VerticalAlignment="Top" Width="85"/>
                        <TextBox HorizontalAlignment="Left" Height="20" Margin="134,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="545"/>
                    </Grid>
                </Grid>
            </TabItem>

        </TabControl>
    </Grid>
</Window>
READ ALSO
Как проверить отключен ли callback?

Как проверить отключен ли callback?

Один умелец выложил в общий доступ код, позволяющий отключить event AssemblyLoad

199
Ошибка в конвертации

Ошибка в конвертации

При попытке конвертировать string в int выдает ошибку:

148
C# Поиск bytes и замена 4 байт по Pos

C# Поиск bytes и замена 4 байт по Pos

Использую данный код для замены 4 байт в файле (замена по позиции)

159
Помогите сделать сортировку

Помогите сделать сортировку

Нужно сделать сортировку двух массивов одновременно (товары и цены)Сортируется цена по убыванию, а вместе с ней и товары

202