无法访问ListBox中的Grid

时间:2013-08-13 06:26:04

标签: windows-phone-7

好吧我的问题是我在ListBox内部的DataTemplate中有Grid。我需要在更改方向时更改网格的列定义,但不幸的是,当我将x:Name分配给网格时,我无法在后面的代码中访问它....是否有特定的方法来执行此操作? 我需要使用名称" test"设置Grid的列定义。 有代码:

<Grid x:Name="EmployeesGrid" Grid.Row="1" Height="550" VerticalAlignment="Bottom">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="280"/>
            <ColumnDefinition Width="195"/>
        </Grid.ColumnDefinitions>
        <ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Grid.ColumnSpan="2" Margin="0,0,0,0">
            <ListBox Height="605" HorizontalAlignment="Left" Margin="0,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="480">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid x:Name="test">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="280"/>
                                <ColumnDefinition Width="195"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="{Binding FullName}" FontSize="20" Grid.Column="0" HorizontalAlignment="Center"/>
                            <TextBlock Text="{Binding BranchName}" FontSize="20" Grid.Column="1" HorizontalAlignment="Center"/>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </ScrollViewer>
    </Grid>

1 个答案:

答案 0 :(得分:0)

试试这个......

var grid = (Grid)listBox1.FindName("test");

如果从ListBox上的点击事件进行访问,请使用此....

var listBox = (ListBox)sender;
var grid = (Grid)listBox.FindName("test");

如果你想进一步从TextBlock获取Grid,请使用此....

var grid = (Grid)listBox1.FindName("test");
var textBlock = (TextBlock)grid.FindName("textBox's Name")

希望有所帮助