UWP 앱에서 MyListView 용 DataTemplate은 Page.Resources의 DataTemplateA 또는 DataTemplateB에 코드 숨김으로 설정됩니다. 각 데이터 템플릿에는 DisplayGridButton과 다른 그리드 (DisplayGrid)가 포함 된 그리드 (TopGrid)가 포함되어 있습니다.그리드가 DataTemplate 안에있을 때 그리드의 가시성을 설정하는 방법은 무엇입니까?
는 DisplayGrid는 SecondListView과 HideGridButton
가DisplayGridButton이 DisplayGrid를 표시해야합니다 포함되어 있습니다. HideGridButton은 DisplayGrid를 축소해야합니다.
XAML은
<Page.Resources>
<DataTemplate x:Key="DataTemplateA">
<Grid Name="TopGrid">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBox/>
<Button Name="DisplayGridButton" Content="Show" Margin="10,0" Click="DisplayGridButton_Click"/>
</StackPanel>
<Grid Name="DisplayGrid" Grid.Row="1" Visibility="Collapsed">
<StackPanel>
<Button Name="HideGridButton" Content="Hide" Click="HideGridButton_Click"/>
<ListView Name="SecondListView">
<ListView.ItemTemplate>
<DataTemplate >
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Grid>
</Grid>
</DataTemplate>
<DataTemplate x:Key="DataTemplateB">
<Grid Name="TopGrid">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBox/>
<Button Name="DisplayGridButton" Content="Show" Margin="10,0" Click="DisplayGridButton_Click"/>
</StackPanel>
<Grid Name="DisplayGrid" Grid.Row="1" Visibility="Collapsed">
<StackPanel>
<Button Name="HideGridButton" Content="Hide" Click="HideGridButton_Click"/>
<ListView Name="SecondListView">
<ListView.ItemTemplate>
<DataTemplate >
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Grid>
</Grid>
</DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView Name="MyListView">
</ListView>
</Grid>
DataTemplateA 또는 DataTemplateB은 뒤에 코드에서 설정됩니다.
if (condition)
{
MyListView.ItemTemplate = (DataTemplate)Resources["DataTemplateA"];
}
else
{
MyListView.ItemTemplate = (DataTemplate)Resources["DataTemplateB"];
}
코드 뒤에는 이벤트 핸들러를 만들 수 있지만 DisplayGrid에 액세스하여 표시하거나 축소 할 수 없습니다.
나는 일반적으로 이와 같은 가시성을 설정합니다.
private void DisplayGridButton_Click(object sender, RoutedEventArgs e)
{
DisplayGrid.Visibility = Visibility.Visible;
}
private void HideGridButton_Click(object sender, RoutedEventArgs e)
{
DisplayGrid.Visibility = Visibility.Collapsed;
}
어떻게하면 단추 클릭 이벤트에서 DataTemplate의 DisplayGrid에 액세스합니까?