0

好的,所以我的问题是我在 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>
4

1 回答 1

0

试试这个....

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

如果从点击事件访问,请ListBox使用 this....

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

希望有帮助

于 2013-08-13T17:00:27.093 回答