简体   繁体   English

为每个项目XAML C#创建Listbox.ItemTemplate

[英]Create Listbox.ItemTemplate for each item XAML C#

I have a problem. 我有个问题。 I have listbox.ItemTemplate with Grid inside. 我有带网格的listbox.ItemTemplate。

<ListBox x:Name="listBox" Foreground="Black" FontSize="23" Height="470">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid Margin="0,0,0,40" Height="80">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="60"/>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock x:Name="stopName_TextBlock" Grid.Column="1" Text="{Binding Title}" Foreground="Black" FontSize="23"/>
                                    <TextBlock x:Name="time_TextBlock" Grid.Column="2" Text="{Binding Time}" Foreground="Black" FontSize="23"/>
                                        <Grid x:Name="firstGraphic" Visibility="Collapsed" Grid.Column="0">
                                            <Rectangle Grid.Row="1" Height="40" Fill="#2575B0" Width="10" VerticalAlignment="Bottom"/>
                                            <Ellipse Grid.Row="1" Fill="#2575B0"  Height="20" Width="20"/>
                                        </Grid>

                                        <Grid x:Name="midleGraphic" Visibility="Collapsed" Grid.Column="0">
                                            <Rectangle Height="80" Width="10" Fill="#2575B0"/>
                                            <Rectangle Height="10" Width="30"  Fill="#2575B0" HorizontalAlignment="Right" RadiusX="5" RadiusY="5"/>
                                        </Grid>

                                        <Grid x:Name="lastGraphic" Visibility="Collapsed" Grid.Column="0">
                                            <Rectangle Grid.Row="2" Height="40" Fill="#2575B0" Width="10" VerticalAlignment="Top"/>
                                            <Ellipse Grid.Row="2" Height="20" Width="20" Fill="#2575B0"/>
                                        </Grid>


                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

My listbox will have 20-25 items. 我的列表框将包含20-25个项目。 First item will have firstGrahic Grid. 第一项将具有firstGrahic Grid。 Last item - lastGraphic Grid. 最后一项-lastGraphic网格。 And the others - midleGraphic Grid. 其他的-midleGraphic Grid。 I created all this Grids, but a dont know how I can find this Grids in C# code. 我创建了所有这些网格,但是不知道如何在C#代码中找到该网格。 I want change Visability property for them. 我想为他们更改可见性属性。

for (int i = 0; i < mainList.Count; i++)
            {
                listBox.Items.Add(mainList[i]);
                if (i == 0)
                {
                    Grid grid = (Grid)this.listBox.FindName("firstGraphic");
                    grid.Visibility = System.Windows.Visibility.Visible;
                }
            }

This example with first Item, but object grid = null. 此示例具有第一个项目,但对象grid = null。 Please help me. 请帮我。

As I can see your model contains properties Title and Time which are bound to TextBlocks. 如我所见,您的模型包含绑定到TextBlocks的属性Title和Time。 You can also add new propery to the model, for example: 您还可以向模型添加新属性,例如:

public Visibility FirstGraphicVisibility { get; set; }

and bind it to the Grid Visibility , eg: 并将其绑定到Grid Visibility ,例如:

<Grid x:Name="firstGraphic" Visibility="{Binding FirstGraphicVisibility}" Grid.Column="0">

next just change FirstGraphicVisibility propery in your source list mainList and set ItemsSource of ListBox : 接下来,只需在源列表mainList更改FirstGraphicVisibility mainList然后设置ListBox ItemsSource

ListBox.ItemsSource = mainList;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Listbox.ItemTemplate中找到控件(WPF C#) - Find control inside Listbox.ItemTemplate (WPF C#) 将属性绑定到创建的每个ListBox.ItemTemplate - Bind property to each ListBox.ItemTemplate created Windows Phone 8.1 ListBox ItemTemplate,每个项目均带有C#方法 - Windows Phone 8.1 ListBox ItemTemplate with a C# method for each item 每个ListBox.ItemTemplate&gt; DataTemplate中都有不同的WPF故事板动画 - Different WPF Storyboard Animation in each ListBox.ItemTemplate>DataTemplate 是否有一个RichTextBox等效于ListBox.ItemTemplate? - Is there a RichTextBox equivalent to a ListBox.ItemTemplate? 如何在Windows Phone 7中以编程方式创建ListBox.Itemtemplate,datatemplate - How to create ListBox.Itemtemplate,datatemplate programatically in Windows Phone 7 DataTrigger在ListBox.ItemTemplate中不起作用 - DataTrigger not working within a ListBox.ItemTemplate 如何使 ListBox.ItemTemplate 可重用/通用 - How to make a ListBox.ItemTemplate reusable/generic 如何从ListBox.ItemTemplate DataTemplate内部调用Button命令以传递参数而不选择ListBox项目? - How do I call Button command from inside of ListBox.ItemTemplate DataTemplate, to pass parameter without selecting ListBox item? 带有长文本的ListBox.ItemTemplate与ListBox宽度不匹配 - ListBox.ItemTemplate with long text does not match ListBox width
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM