Как отобразить выбранные данные сетки данных на другой странице с помощью навигатора кадров в wpf mvvm - PullRequest
0 голосов
/ 17 апреля 2020

файл xaml главного окна

<Window x:Class="Master_page.frametesting"
    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:Master_page"
    mc:Ignorable="d"
    Title="frametesting" Height="550" Width="1001">



<DockPanel >



    <Frame x:Name="Mainframe" Navigated="Mainframe_Navigated">

    </Frame>
</DockPanel>

файл xaml.cs главного окна

namespace Master_page

{

public partial class frametesting : Window
{
    public frametesting()
    {
        InitializeComponent();
        Mainframe.Content = new gridviewpage();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Mainframe.Content = new viewDetailPage();
    }

xaml-файл для сетки данных

 <DataGrid x:Name="g1" ItemsSource="{Binding lstTable3}"   SelectionMode="Single" SelectionUnit="FullRow" HorizontalAlignment="Stretch"   materialDesign:DataGridAssist.CellPadding="7,3,3,3" MinHeight="404"   VerticalAlignment="Stretch"  Margin="15,0,10,0" AutoGenerateColumns="False" CanUserDeleteRows="True" CanUserAddRows="false" MinWidth="625" >
                                <DataGrid.Resources>
                                    <Style TargetType="{x:Type DataGridColumnHeader}">
                                        <Setter Property="Background" Value="#f5f5f5"/>
                                        <Setter Property="Height" Value="30"/>
                                        <Setter Property="HorizontalContentAlignment" Value="Left"/>
                                        <Setter Property="Padding" Value="6"/>


                                        <Setter Property="BorderBrush" Value="Black"/>
                                        <Setter Property="Foreground" Value="Black"/>
                                    </Style>
                                    <Style TargetType="{x:Type DataGridRow}">
                                        <Setter Property="Background" Value="#ffffff"/>
                                    </Style>
                                </DataGrid.Resources>
                                <DataGrid.Columns>
                                    <DataGridTextColumn  Width="1*" Header="S.No" />
                                    <DataGridTextColumn Binding="{Binding Id}" Width="1*" Header="S.No" />
                                    <DataGridTextColumn Binding="{Binding Title}" Width="2*" Header="Title"/>
                                    <DataGridTextColumn Binding="{Binding o_rder}" Width="1*" Header="Order"/>
                                    <DataGridTextColumn Binding="{Binding Is_Active}" Width="1*" Header="Is Active"/>
                                    <DataGridTextColumn Binding="{Binding Created_on}" Width="2*" Header="Created On"/>
                                    <DataGridTemplateColumn Width="3*" Header="Action">
                                        <DataGridTemplateColumn.CellTemplate>

                                            <DataTemplate>
                                                <StackPanel >
                                                    <Button  Style="{StaticResource MaterialDesignFlatButton}" MinWidth="60" Content="view" Command="{Binding DataContext.ViewCommand,RelativeSource={RelativeSource AncestorType=DataGrid}}" CommandParameter="{Binding Id}" Click="Button_Click"  >

                                                    </Button>
                                                <Button Style="{StaticResource MaterialDesignFlatButton}" MinWidth="60"  Content="delete" Command="{Binding DataContext.DeleteCommand,RelativeSource={RelativeSource AncestorType=DataGrid}}" CommandParameter="{Binding Id}" >

                                                    </Button>
                                                <Button Style="{StaticResource MaterialDesignFlatButton}" MinWidth="60" Content="check" Command="{Binding DataContext.CheckCommand,RelativeSource={RelativeSource AncestorType=DataGrid}}" CommandParameter="{Binding Id }" >

                                                    </Button>
                                                </StackPanel>
                                            </DataTemplate>

                                        </DataGridTemplateColumn.CellTemplate>

                                    </DataGridTemplateColumn>


                                </DataGrid.Columns>
                            </DataGrid>
                        </Grid>

xaml.cs файл для сетки данных

 public partial class gridviewpage : Page
{
    model_view model = new model_view();
    public gridviewpage()
    {
        InitializeComponent();
        this.DataContext = model;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        this.NavigationService.Navigate(new viewDetailPage());
    }
}

просмотр модели

 public ICommand ViewCommand
    {
        get
        {
            if (_viewcommand == null)
            {
                _viewcommand = new Relaycommand(param => this.view(param));
            }
            return _viewcommand;
        }
    }

    public object NavigationService { get;  set; }

    public void view(object y)
    {
        //SerialNo();
        string Id = y.ToString();
        int id = int.Parse(Id);
        using (var db = new deepakEntities())
        {
            Table_3 tbl = new Table_3();

            bool flag = db.Table_3.Where(x => x.Id == id).Any();
            tbl = db.Table_3.Where(x => x.Id == id).First();
            this.Title = tbl.Title;
            this.IsActive = tbl.Is_Active;
            this.CreatedOn = tbl.Created_on;
            this.Order = tbl.o_rder;

            //viewWindow ob = new viewWindow(id, Title, IsActive, CreatedOn, Order);
            //ob.ShowDialog()
        }



    }

xaml файл для просмотра

<Page x:Class="Master_page.viewPages.viewDetailPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:local="clr-namespace:Master_page.viewPages"
  mc:Ignorable="d" 
  d:DesignHeight="450" d:DesignWidth="800"
  Title="viewDetailPage">

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="2*"></RowDefinition>

        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>

        <RowDefinition Height="2*"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="2*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Label x:Name="lblTitle" Content="{Binding Title, NotifyOnTargetUpdated=True  }"  Grid.Row="1" Grid.Column="2"  ></Label>
    <Label x:Name="lblIsActive" Grid.Row="2" Grid.Column="2"  ></Label>
    <Label x:Name="lblorder" Grid.Row="3" Grid.Column="2"  ></Label>
    <Label x:Name="lblcreateon" Grid.Row="4" Grid.Column="2"  ></Label>

    <Label Content="Title" Grid.Row="1" Grid.Column="1"/>
    <Label Content="Is Active" Grid.Row="2" Grid.Column="1"/>
    <Label Content="Order" Grid.Row="3" Grid.Column="1"/>
    <Label Content="Created on" Grid.Row="4" Grid.Column="1"/>
    <Button  Content="Go Back" Grid.Column="2" Grid.Row="5" />

</Grid>

xaml. CS файл для просмотра страницы

 public partial class viewDetailPage : Page
{
    model_view model = new model_view();
    public viewDetailPage()
    {
        InitializeComponent();
        this.DataContext = model;

        lblTitle.Content += model.Title;
        lblIsActive.Content += model.IsActive;
        lblorder.Content += model.Order;
        lblcreateon.Content += model.CreatedOn;

    }
}

Я создал главное окно и две страницы, одна для сетки данных, а другая для отображения выбранных данных строки в метке. я пытался показать данные, не создавая объект страницы окна на странице ViewModel. но не мог передать данные без создания объекта страницы окна. Все, что я хочу - это нажать на кнопку просмотра, она переключает страницу и показывает выбранные данные строки на этой странице. Пожалуйста, помогите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...