none
Formato a ListView desde WPF .Net 3.5 RRS feed

  • Pregunta

  • Hola, tengo varios proyectos en WPF con .NET 4.5 y superior, para los que diseñé todo un Diccionario de recursos con todos los controles que necesito botones, textbox, combobox, DataGrid, Calendar, etc. con un diseño personalizado

    Por ciertas razones debo hacer un pequeño proyecto en WPF pero utilizando .NET Framework 3.5, y resulta que allí no puedo utilizar nada de lo que ya tenía diseñado en mi diccionario, pues marca un montón de errores.

    De entrada aquí no puedo usar el DataGrid que es el que más utilizo para presentar resultados de consultas, así que estoy tratando de hacerlo usando un ListView (que nunca había utilizado)

    Ya logré presentar los resultados de mi consulta, estoy usando MVVM, y los cargo en una colección que enlazo con la propiedad ItemsSource del ListView y todo bien

    La ayuda que necesito, para tratar de simular algunas de las cosas que hacía en mis otros proyectos, es:

    - Cómo puedo mediante código XAML definir que alterne el color de los renglones del ListView entre Ivory y DarkGreen??

    - Puede el usuario seleccionar los datos en los renglones del ListView darle un Copy para luego darle un Paste en una hoja de Excel?

    Muchas gracias por la orientación que puedan brindarme...


    cyndyrdz


    miércoles, 26 de febrero de 2020 16:51

Respuestas

  • la primera parte ya la resolví, agregando una propiedad Color a mi clase:

    <ListView Grid.Row="1" Name="ListView1"  ItemsSource="{Binding ProduccionxTurno, Source={StaticResource ProduccionxMaterialVM}}" >
            <ListView.Resources>
                <Style TargetType="ListViewItem">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Color}" Value="True">
                            <Setter Property="Background" Value="Ivory" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Color}" Value="False">
                            <Setter Property="Background" Value="DarkSeaGreen" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListView.Resources>

    Y llenándolo con True o False al cargar la colección:

    int i = 0;
    if (sqlreader.HasRows)
    {
        while (sqlreader.Read())
        {
            i++;
            _produccionxturno.Add(new ProduccionxTurnoCL
            {
                Fecha = sqlreader["Fecha"].ToString() == string.Empty ? "" : (sqlreader["Fecha"].ToString()),
                Material = sqlreader["Material"].ToString() == string.Empty ? 0 : Convert.ToInt32(sqlreader["Material"].ToString()),
                Descripcion = sqlreader["Descripcion"].ToString() == string.Empty ? "" : (sqlreader["Descripcion"].ToString()),
                Ecologista = sqlreader["Ecologista"].ToString() == string.Empty ? 0 : (double)(sqlreader["Ecologista"]),
                TierraLimpia = sqlreader["TierraLimpia"].ToString() == string.Empty ? 0 : (double)(sqlreader["TierraLimpia"]),
                Total = sqlreader["Total"].ToString() == string.Empty ? 0 : (double)(sqlreader["Total"]),
                Color = i/2 == (double)i/(double)2 ? true : false
            }
                );
        }
    }

    solo me falta el segundo, o ver la manera de mandarlo a imprimir en un reporte, usaba Telerik Report pero no funciona en 3.5...


    cyndyrdz

    miércoles, 26 de febrero de 2020 17:47
  • Y para el segundo punto ya revisé, y si funciona lo que ya había hecho en otro proyecto anterior con .NET 4.5:

    https://social.msdn.microsoft.com/Forums/es-ES/807bcd38-82ee-4a0f-84f1-206f137ceaca/crear-archivo-excel-a-partir-de-una-observablecollection-en-wpf?forum=wpfes


    cyndyrdz

    miércoles, 26 de febrero de 2020 21:42

Todas las respuestas

  • la primera parte ya la resolví, agregando una propiedad Color a mi clase:

    <ListView Grid.Row="1" Name="ListView1"  ItemsSource="{Binding ProduccionxTurno, Source={StaticResource ProduccionxMaterialVM}}" >
            <ListView.Resources>
                <Style TargetType="ListViewItem">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Color}" Value="True">
                            <Setter Property="Background" Value="Ivory" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Color}" Value="False">
                            <Setter Property="Background" Value="DarkSeaGreen" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListView.Resources>

    Y llenándolo con True o False al cargar la colección:

    int i = 0;
    if (sqlreader.HasRows)
    {
        while (sqlreader.Read())
        {
            i++;
            _produccionxturno.Add(new ProduccionxTurnoCL
            {
                Fecha = sqlreader["Fecha"].ToString() == string.Empty ? "" : (sqlreader["Fecha"].ToString()),
                Material = sqlreader["Material"].ToString() == string.Empty ? 0 : Convert.ToInt32(sqlreader["Material"].ToString()),
                Descripcion = sqlreader["Descripcion"].ToString() == string.Empty ? "" : (sqlreader["Descripcion"].ToString()),
                Ecologista = sqlreader["Ecologista"].ToString() == string.Empty ? 0 : (double)(sqlreader["Ecologista"]),
                TierraLimpia = sqlreader["TierraLimpia"].ToString() == string.Empty ? 0 : (double)(sqlreader["TierraLimpia"]),
                Total = sqlreader["Total"].ToString() == string.Empty ? 0 : (double)(sqlreader["Total"]),
                Color = i/2 == (double)i/(double)2 ? true : false
            }
                );
        }
    }

    solo me falta el segundo, o ver la manera de mandarlo a imprimir en un reporte, usaba Telerik Report pero no funciona en 3.5...


    cyndyrdz

    miércoles, 26 de febrero de 2020 17:47
  • Y para el segundo punto ya revisé, y si funciona lo que ya había hecho en otro proyecto anterior con .NET 4.5:

    https://social.msdn.microsoft.com/Forums/es-ES/807bcd38-82ee-4a0f-84f1-206f137ceaca/crear-archivo-excel-a-partir-de-una-observablecollection-en-wpf?forum=wpfes


    cyndyrdz

    miércoles, 26 de febrero de 2020 21:42