I have a Listview with just the header set to display totals from another list. How do I access Textblock tbkValue to change its Text property?
<ListView x:Name="lvwTotals" Margin="1,0,3,3" ScrollViewer.HorizontalScrollBarVisibility="Auto" >
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.HeaderTemplate>
<DataTemplate>
<Grid Padding="12" Margin="3,5,1.5,5" Background="{ThemeResource SystemBaseLowColor}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="70"/>
<ColumnDefinition Width="70"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" x:Uid="PlayPgTbkTotals" TextWrapping="NoWrap" FontSize="12" />
<TextBlock Grid.Column="1" x:Name="tbkValue" TextWrapping="NoWrap" FontSize="12" />
<TextBlock Grid.Column="2" TextWrapping="NoWrap" FontSize="12" />
<TextBlock Grid.Column="3" TextWrapping="NoWrap" FontSize="12" />
<TextBlock Grid.Column="4" TextWrapping="NoWrap" FontSize="12" />
<TextBlock Grid.Column="5" TextWrapping="NoWrap" FontSize="12" />
<TextBlock Grid.Column="6" TextWrapping="NoWrap" FontSize="12" />
</Grid>
</DataTemplate>
</ListView.HeaderTemplate>
</ListView>
A simple way to do this is to use the VisualTreeHelper Class.
Code-behind:
private void Button_Click(object sender, RoutedEventArgs e)
{
var textblcok = MyFindChildByName(lvwTotals, "tbkValue") as TextBlock;
textblcok.Text = "New Content";
}
public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
{
int count = VisualTreeHelper.GetChildrenCount(parant);
for (int i = 0; i < count; i++)
{
var MyChild = VisualTreeHelper.GetChild(parant, i);
if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
return MyChild;
var FindResult = MyFindChildByName(MyChild, ControlName);
if (FindResult != null)
return FindResult;
}
return null;
}