Sé que esto se ha preguntado ya, pero lo he hecho casi todo lo que es sugerido por los desarrolladores.

<DataGrid x:Name="Imported" VerticalAlignment="Top" DataContext="{Binding Source=list}"  AutoGenerateColumns="False" CanUserResizeColumns="True">
    <DataGrid.Columns>                
        <DataGridTextColumn Header="ID" Binding="{Binding Path=ID}"/>
        <DataGridTextColumn Header="Date" Binding="{Binding Path=Date}"/>
    </DataGrid.Columns>
</DataGrid>

Estoy tratando de mostrar en este cuadro de diálogo modal y rellenar la lista de licencias en el constructor del cuadro de diálogo modal.
Pero aún nada está recibiendo poblada dentro del datagrid.

Constructor código:

public diagboxclass()
{
    List<object> list = new List<object>();
    list = GetObjectList();
}

public class object
{
    string id;
    DateTime date;
    public string ID
    {
        get { return id; }
        set { id = value; }
    }
    public DateTime Date
    {
        get { return date; }
        set { date = value; }
    }
}

¿Ustedes piensan que algo que ver con la lista de objetos?

Mi objeto de la lista tiene más propiedades que el dos por encima de la cual no estoy de unión? habría que puede hacer cualquier diff?
Probablemente no. Por favor, compartir un poco más de su XAML (incluyendo cómo list se define) para que te podamos ayudar más.
He añadido el código en la parte superior.
De qué tipo es el diagboxclass? De qué tipo es el XAML de la clase containing el DataGrid? Si diagboxclass está en el código-detrás de el archivo XAML, se debe asignar list a la DataContext propiedad de esa clase. A continuación, usted debe ser capaz de unirse a la lista de en el XAML.
Hola, Si una de las Respuestas ayudado a usted de nuevo en 2011, favor de marcar como Respuesta, thx

OriginalEl autor alice7 | 2011-04-27

3 Comentarios

  1. 29

    Por FAVOR, no utilice objeto como un nombre de clase:

    public class MyObject //better to choose an appropriate name
    {
        string id;
        DateTime date;
        public string ID
        {
           get { return id; }
           set { id = value; }
        }
        public DateTime Date
        {
           get { return date; }
           set { date = value; }
        }
    }

    Debe implementar INotifyPropertyChanged para esta clase y, por supuesto, llamada en el establecedor de la Propiedad. De lo contrario, no se reflejan los cambios en la interfaz de usuario.

    Su clase Viewmodel/dialogbox clase debe tener una Property de su MyObject lista. ObservableCollection<MyObject> es el camino a seguir:

    public ObservableCollection<MyObject> MyList
    {
         get...
         set...
    }

    En su xaml debe establecer el Itemssource a su colección de MyObject. (el Datacontext tiene que ser su dialogbox clase!)

    <DataGrid ItemsSource="{Binding Source=MyList}"  AutoGenerateColumns="False">
       <DataGrid.Columns>                
         <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
         <DataGridTextColumn Header="Date" Binding="{Binding Date}"/>
       </DataGrid.Columns>
    </DataGrid>
    En mi caso, la ItemSource del DataGrid debe ser: ItemsSource=»{Binding MyList}»

    OriginalEl autor blindmeis

  2. 21

    Sin ver dicho objeto de la lista, yo creo que usted debería ser vinculante para el DataGrid del ItemsSource de propiedad, no de su DataContext.

    <DataGrid x:Name="Imported" VerticalAlignment="Top" ItemsSource="{Binding Source=list}"  AutoGenerateColumns="False" CanUserResizeColumns="True">
        <DataGrid.Columns>                
            <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
            <DataGridTextColumn Header="Date" Binding="{Binding Date}"/>
       </DataGrid.Columns>
    </DataGrid>

    (Esto supone que el elemento [UserControl, etc.] que contiene el DataGrid tiene su DataContext enlazado a un objeto que contiene la list colección. El control DataGrid se deriva de ItemsControl, que se basa en su ItemsSource propiedad para definir la colección se une a sus filas. Por lo tanto, si list no es una propiedad de un objeto enlazado a su control DataContext, usted puede ser que necesite para establecer DataContext={Binding list} y ItemsSource={Binding list} en el DataGrid…)

    No funciona con itemssource así.He intentado.
    A continuación, por favor enviar XAML mostrando el resto de tu Ventana/control de usuario/Lo que sea, contiene la cuadrícula, y háganos saber cómo list está definido. 🙂
    Dentro del constructor de… ¿qué? Por favor, edita tu pregunta (haga clic en el edit enlace que aparece debajo de las etiquetas) a fin de incluir más código, es bastante difícil de leer en un comentario. Gracias 🙂
    Es necesario exponer que la lista como una propiedad pública y establecer un adecuado DataContext, probablemente, usted debe leer referencia.
    La Unión en la Propiedad ItemsSource es tal vez mal. En mi caso yo no era satisfactoria cuando se declaro la Unión con «{Binding Source=lista}». Pero que fue un éxito cuando se declaro la Unión con «{Binding lista}».

    OriginalEl autor Dan J

  3. 4

    intente hacer esto en el detrás de código

       public diagboxclass()
       {
             List<object> list = new List<object>();
             list = GetObjectList();
             Imported.ItemsSource = null;
             Imported.ItemsSource = list;
       }

    También asegúrese de que su lista es efectivamente pobladas y como se ha mencionado por Blindmeis, nunca use palabras que ya se les da una función en c#.

    OriginalEl autor Schuere

Dejar respuesta

Please enter your comment!
Please enter your name here