0
我有一個wpf應用程序,我在App.xaml中有ControlTemplate。這個ControlTemplate包含Grid和Canvas。通過c訪問ControlTemplate xaml內的元素#
<Application.Resources>
<ControlTemplate x:Key="PinTemplate" TargetType="m:Pushpin">
<Grid x:Name="grid2" HorizontalAlignment="left" VerticalAlignment="Center" >
<Canvas x:Name="ContentPopup" Visibility="{TemplateBinding Visibility}">
<StackPanel x:Name="stackPanel1" Canvas.Left="0" Canvas.Top="-20" Visibility="{TemplateBinding Visibility}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
Margin="0" TextBlock.FontFamily="Segoe UI" TextBlock.FontWeight="Bold" TextBlock.FontSize="10" TextBlock.Foreground="Blue">
</ContentPresenter>
</StackPanel>
</Canvas>
<Canvas>
<Ellipse Name="Ellips12" Fill="AliceBlue" Opacity="0.7" Stroke="Red" StrokeThickness="2" Height="25" Stretch="Fill" Canvas.Top="5" Width="25" />
<TextBlock Text="{TemplateBinding ContentStringFormat }" TextBlock.Foreground="Blue" FontSize="13" TextBlock.TextAlignment="Right" Margin="10,7,10,0">
</TextBlock>
</Canvas>
</Grid>
</ControlTemplate>
</Application.Resources>
我需要幫助從mainWindow.xaml.cs訪問此ControlTemplate中的網格和Canvas。 我想在PropertyChanged或ViewChangeEnd事件時更改屬性「可見性」。
,我已經嘗試過,但沒有奏效。
ControlTemplate ct = Application.Current.Resources["PinTemplate"] as ControlTemplate;
Grid gr = ct.Resources["grid2"] as Grid;
gr.Visibility = Visibility.Collapsed;
即使這樣
ControlTemplate ct = Application.Current.Resources["PinTemplate"] as ControlTemplate;
Grid gr = ct.FindName("grid2", this) as Grid;
你是說我應該先載入ControlTemplate?像這樣ct.LoadContent(); –
不,嘗試在UserControl.Loaded事件(應用到的UserControl)上查找 – faztp12