C# 访问Itemscontrol'中的对象;s项目来源
这是我的ItemsControlC# 访问Itemscontrol'中的对象;s项目来源,c#,wpf,C#,Wpf,这是我的ItemsControl <ItemsControl Name="empanadas_ic" ItemsSource="{Binding}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Columns="2"/> </ItemsPanelTemplate> </ItemsContr
<ItemsControl Name="empanadas_ic"
ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Right">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="25"/>
</Grid.ColumnDefinitions>
<Label Name="emp_nombre_lbl"
Content="{Binding nombre}"
Grid.Column="0"/>
<TextBox Name="emp_cantidad_tb"
Grid.Column="1"
TextChanged="emp_cantidad_tb_TextChanged" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我已访问标签和文本框,但未访问ItemsSource中的de项:
int cant;
String nombre;
ContentPresenter c;
for (int i = 0; i < empanadas_ic.Items.Count; i++){
c = (ContentPresenter)empanadas_ic.ItemContainerGenerator.ContainerFromItem(empanadas_ic.Items[i]);
// LABEL ACCESS
nombre = (c.ContentTemplate.FindName("emp_nombre_lbl", c) as Label).Content.ToString();
// TEXTBOX ACCESS
cant = Convert.ToInt32((c.ContentTemplate.FindName("emp_cantidad_tb", c) as TextBox).Text);
}
它向我展示了这样的东西:
{1, lalala, 123}
所以。。。我的对象在那里,但不能丰富它们。您的
ItemsSource
设置为匿名类型的IEnumerable
:
您可以使用dynamic
关键字访问它的属性:
for (int i = 0; i<empanadas_ic.Items.Count; i++)
{
dynamic obj = empanadas_ic.Items[i];
var id_empanada = obj.id_empanada.ToString();
var nombre = obj.nombre.ToString();
//...
}
…将ItemsSource
设置为此类型的IEnumerable
:
var v_empanadas = from t_empanadas in context.empanadas.ToList()
where t_empanadas.habilitado
select new YourClass
{
id_empanada = t_empanadas.id_empanada,
nombre = t_empanadas.nombre,
precio = t_empanadas.precio
};
…和演员:
for (int i = 0; i<empanadas_ic.Items.Count; i++)
{
YourClass obj = empanadas_ic.Items[i] as YourClass;
if(obj != null)
{
var id_empanada = obj.id_empanada;
}
//...
}
for(int i=0;i您的ItemsSource
设置为匿名类型的IEnumerable
:
您可以使用dynamic
关键字访问它的属性:
for (int i = 0; i<empanadas_ic.Items.Count; i++)
{
dynamic obj = empanadas_ic.Items[i];
var id_empanada = obj.id_empanada.ToString();
var nombre = obj.nombre.ToString();
//...
}
…将ItemsSource
设置为此类型的IEnumerable
:
var v_empanadas = from t_empanadas in context.empanadas.ToList()
where t_empanadas.habilitado
select new YourClass
{
id_empanada = t_empanadas.id_empanada,
nombre = t_empanadas.nombre,
precio = t_empanadas.precio
};
…和演员:
for (int i = 0; i<empanadas_ic.Items.Count; i++)
{
YourClass obj = empanadas_ic.Items[i] as YourClass;
if(obj != null)
{
var id_empanada = obj.id_empanada;
}
//...
}
for(int i=0;i