好吧我的问题是我在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>
答案 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")
希望有所帮助