【问题标题】:Unable to access Grid inside ListBox无法访问 ListBox 内的 Grid
【发布时间】:2014-06-27 08:17:29
【问题描述】:

好的,所以我的问题是我在 ListBox 内的 DataTemplate 中有 Grid。当我更改方向时,我需要更改网格的列定义,但不幸的是,当我将 x:Name 分配给网格时,我无法在后面的代码中访问它......有没有特定的方法可以做到这一点? 我需要设置名称为“test”的网格的列定义。 有代码:

<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>

【问题讨论】:

  • 您应该能够使用名称EmployeesGrid 从后面的代码访问网格。您确定您在正确的文件中吗?
  • 每个DataTemplate里面是Grid吗?
  • 我需要访问“测试”网格。是的,它在 DataTemplate 中

标签: windows-phone-7


【解决方案1】:

试试这个....

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

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

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

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

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

希望有帮助

【讨论】:

  • var grid = (Grid)listBox1.FindName("test");不幸的是返回 null... 我试图捕捉 Grid 事件的加载,但我不知道如何编辑列宽。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多