Mega Code Archive

 
Categories / C# / WPF
 

Use a ContentTemplate and determine whether the control contains content

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:c="CodeMapNS"     x:Class="ContentControlSimple.Page1">     <StackPanel>         <StackPanel.Resources>             <Style x:Key="ContentCtrl" TargetType="{x:Type ContentControl}">                 <Setter Property="Background" Value="Black"/>                 <Setter Property="Foreground" Value="Red"/>                 <Setter Property="FontSize" Value="40"/>                 <Setter Property="Template">                     <Setter.Value>                         <ControlTemplate TargetType="{x:Type ContentControl}">                             <Grid>                                 <Ellipse Width="{TemplateBinding Width}" Height="{TemplateBinding Width}" Fill="{TemplateBinding Background}"/>                                 <ContentPresenter VerticalAlignment="Center"                                     HorizontalAlignment="Center"/>                             </Grid>                         </ControlTemplate>                     </Setter.Value>                 </Setter>             </Style>             <DataTemplate x:Key="template1">                 <TextBlock Text="{Binding}" FontSize="12" FontWeight="Bold" TextWrapping="Wrap"></TextBlock>             </DataTemplate>         </StackPanel.Resources>         <Label Margin="10, 10, 3, 3" Grid.Column="0" Grid.Row="2">             <ContentControl Width="75" Style="{StaticResource ContentCtrl}" Content="Hello"/>         </Label>         <Label Margin="10, 10, 3, 3" Grid.Column="0" Grid.Row="3"            Background="Blue">             <ContentControl Name="contCtrl" ContentTemplate="{StaticResource template1}"            Content="This is the content of the content control."/>         </Label>         <Button Name="btn2" Margin="10, 10, 3, 3" Grid.Column="0" Grid.Row="4" Background="LightBlue" Click="OnClick">             <TextBlock TextWrapping="Wrap">Click </TextBlock>         </Button>     </StackPanel> </Canvas> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Data; using System.Windows.Media; using System.Collections.ObjectModel; namespace ContentControlSimple {     public partial class Page1 : Canvas     {         void OnClick(object sender, RoutedEventArgs e)         {             if (contCtrl.HasContent == true)             {                 MessageBox.Show("contCtrl has content");             }         }     } }