2012-04-04 9 views
1

Ich versuche, das Beispiel hier skizzierte umzusetzen: „Die ContentPresenter Steuerung verwendet werden kann, um den Inhalt eines WPF-Steuerelement, um“Festlegen von TemplateBinding zum Auflösen von WPF-Fehlern "Kann TemplateBinding nicht festlegen, wenn nicht in einer Vorlage"?

http://www.codeproject.com/Articles/30994/Introduction-to-WPF-Templates

Der Autor erklärt

mit dem folgenden Code:

<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" 
Content="{TemplateBinding Button.Content}" /> 

ich es meinem Fenster hinzugefügt haben, wie folgt:

<Window x:Class="HKC.Desktop.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="487" Width="765.924" Loaded="Window_Loaded"> 

    <Grid x:Name="mainGrid" Background="#FF252525"> 
     <Button Content="Push Me" Template="{StaticResource buttonTemplate}" Name="button1" Height="100" Width="100"></Button> 

     <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Button.Content}" /> 
    </Grid> 


</Window> 

Aber ich bin immer folgende Fehlermeldung:

Cannot set a TemplateBinding if not in a template. 

Wie kann ich das beheben?

Antwort

1

Sie müssen die ContentPresent im Control setzen, wie die

<ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type Button}"> 
      <Grid> 
       <Ellipse Name="el1" Fill="Orange" Width="100" Height="100"> 
       </Ellipse> 
       <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" 
         Content="{TemplateBinding Button.Content}" /> 
      </Grid> 
</ControlTemplate> 
0

Das Problem ist, dass Sie keine Vorlage haben. Ihr XAML sollte in etwa so aussehen:

<Window x:Class="HKC.Desktop.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="487" Width="765.924" Loaded="Window_Loaded"> 
    <Window.Resources> 
     <ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type Button}">  
      <Ellipse Name="el1" Fill="Orange" Width="100" Height="100">    
      <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Button.Content}" /> 
     </ControlTemplate> 
    </Window.Resources> 

    <Grid x:Name="mainGrid" Background="#FF252525"> 
     <Button Content="Push Me" Template="{StaticResource buttonTemplate}" Name="button1" Height="100" Width="100"/> 
    </Grid> 
</Window> 
Verwandte Themen