private void CampoProdutos_Loaded(object sender, RoutedEventArgs e) { double total = 0, maximo = espacoParaProdutos.ActualHeight; var produtosNestaPagina = ContextoGeral._DadosProdutos.TakeWhile(x => { var item = new PartesDANFE.ItemProduto() { DataContext = x }; item.Measure(new Windows.Foundation.Size(PartesDANFE.DimensoesPadrao.LarguraTotalStatic, espacoParaProdutos.ActualHeight)); total += item.DesiredSize.Height; return(total <= maximo); }); produtosNestaPagina.ToList().ForEach(((PartesDANFE.CampoProdutos)sender).Contexto.Add); bool excessoProdutos = ContextoGeral._DadosProdutos.Length - produtosNestaPagina.Count() > 0; bool excessoObservacao = infoAdicional.CampoObservacoes.HasOverflowContent; if (excessoProdutos) { var produtosRestantes = ContextoGeral._DadosProdutos.Except(produtosNestaPagina); if (excessoObservacao) { PaiPaginas.Add(new PaginaExtra(ContextoNFe, produtosRestantes, infoAdicional.CampoObservacoes, PaiPaginas, MotivoCriacaoPaginaExtra.Ambos, this)); } else { PaiPaginas.Add(new PaginaExtra(ContextoNFe, produtosRestantes, infoAdicional.CampoObservacoes, PaiPaginas, MotivoCriacaoPaginaExtra.Produtos, this)); } } else if (excessoObservacao) { PaiPaginas.Add(new PaginaExtra(ContextoNFe, null, infoAdicional.CampoObservacoes, PaiPaginas, MotivoCriacaoPaginaExtra.Observacao, this)); } else { OnPaginaCarregada(); } }
public PaginaExtra(DadosNFe cabecalho, IEnumerable <DadosProduto> produtos, RichTextBlock infoAdicional, UIElementCollection paiPaginas, MotivoCriacaoPaginaExtra motivo, PaginaPrincipal principal) { InitializeComponent(); ContextoNFe = cabecalho; if (motivo == MotivoCriacaoPaginaExtra.Ambos) { double total = 0, maximo = espacoParaProdutos.ActualHeight; var produtosNestaPagina = produtos.TakeWhile(x => { var item = new PartesDANFE.ItemProduto() { DataContext = x }; item.Measure(new Windows.Foundation.Size(PartesDANFE.DimensoesPadrao.LarguraTotalStatic, espacoParaProdutos.ActualHeight)); total += item.DesiredSize.Height; return(total <= maximo); }); campoProdutos.DataContext = produtosNestaPagina.ToArray(); bool excessoProdutos = produtos.Count() - produtosNestaPagina.Count() > 0; if (excessoProdutos) { var produtosRestantes = produtos.Except(produtosNestaPagina); paiPaginas.Add(new PaginaExtra(cabecalho, produtosRestantes, infoAdicional, paiPaginas, MotivoCriacaoPaginaExtra.Ambos, principal)); } else { infoAdicional.OverflowContentTarget = campoInfo; if (infoAdicional.HasOverflowContent) { infoAdicional.OverflowContentTarget = null; grd.Children.Remove(geralCampoInfo); paiPaginas.Add(new PaginaExtra(cabecalho, null, infoAdicional, paiPaginas, MotivoCriacaoPaginaExtra.Observacao, principal)); } } } else if (motivo == MotivoCriacaoPaginaExtra.Observacao) { grd.Children.Remove(campoProdutos); espacoParaProdutos.Height = new GridLength(0); infoAdicional.OverflowContentTarget = campoInfo; } else { grd.Children.Remove(geralCampoInfo); double total = 0, maximo = espacoParaProdutos.ActualHeight; var produtosNestaPagina = produtos.TakeWhile(x => { var item = new PartesDANFE.ItemProduto() { DataContext = x }; item.Measure(new Windows.Foundation.Size(PartesDANFE.DimensoesPadrao.LarguraTotalStatic, espacoParaProdutos.ActualHeight)); total += item.DesiredSize.Height; return(total <= maximo); }); produtosNestaPagina.ToList().ForEach(campoProdutos.Contexto.Add); bool excessoProdutos = produtos.Count() - produtosNestaPagina.Count() > 0; if (excessoProdutos) { var produtosRestantes = produtos.Except(produtosNestaPagina); paiPaginas.Add(new PaginaExtra(cabecalho, produtosRestantes, infoAdicional, paiPaginas, MotivoCriacaoPaginaExtra.Produtos, principal)); } } principal.OnPaginaCarregada(); }