Vito Arconzo's Blog

.net, .net, .net & windows presentation foundation

[WPF] ContentControl.HasContent: ridondante?

Ogni controllo WPF che eredita da ContentControl ha un proprietà HasContent di tipo boolean che restituisce True se il controllo ha un contenuto o, al contrario, restituisce False.

If (contCtrl.HasContent = True) Then contCtrl.Content = "Has content" End If

La stessa cosa possiamo ottenerla testando che la proprietà Content sia Nothing.

A prima vista, quindi, viene facile pensare che l'informazione restituita sia ridondante...ma non è così. smile_nerd

Guardando la proprietà in "chiave" XAML, essendo una DependencyProperty, questa può essere utilizzata in qualsiasi Trigger e quindi, a seconda del contenuto, far scattare qualcosa.

<Window x:Class="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowsApplication1" Height="300" Width="300" > <Window.Resources> <Style TargetType="Button"> <Style.Triggers> <Trigger Property="HasContent" Value="False"> <Setter Property="Background" Value="Red"/> </Trigger> </Style.Triggers> </Style> </Window.Resources> <StackPanel> <Button Height="30" Name="Button1" VerticalAlignment="Top">Button</Button> <Button Height="30" Name="Button2" VerticalAlignment="Top"/> </StackPanel> </Window>

Nell'esempio si vede come, il button con il Content ha il background di default mentre, il secondo prende il backgroung rosso.

Conclusioni: ContentControl.HasContent ridondante? NO...benvenuti in WPF smile_teeth

Posted: Feb 13 2007, 09:56 AM by VitoA | with 2 comment(s)
Filed under:

Comments

Mel said:

L'esempio che hai postato non funziona...

# February 14, 2007 9:29 AM

VitoA said:

Il mio obiettivo non era quello di dare un esempio funzionante ma piuttosto rendere l'idea...cmq ho modificato il post con un esempio completo Wink

# February 14, 2007 4:15 PM