2016-08-30 4 views
1

Ich bin Neuling in WPF und wollte wissen, wie in WPF wir das Kind an Eltern binden können. Um es klar: Ich habe eine Benutzer-Steuerung wieBinding Kind zum Elternteil

<Button x:Name="JobViewer" Margin="5" Background="Transparent" Content="{TemplateBinding Content }" ToolTip="{Binding Name, RelativeSource={RelativeSource Self}}"> 
    <Button.ContentTemplate> 
     <DataTemplate> 
      <Canvas Background="Black"> 
       <Border CornerRadius="8" Height="100" Width="100" Canvas.Left="-52" Canvas.Top="-50" 
       BorderThickness="0" BorderBrush="Black"> 
        <Border.Effect> 
         <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" /> 
        </Border.Effect> 
        <Image Source="{Binding}" /> 
       </Border> 
       <Border x:Name="Update" CornerRadius="20" Width="35" Height="38" Canvas.Left="26" Canvas.Top="-65" Visibility="{Binding ElementName=mainWindow, Path=JobViewerUpdateVisibility}"BorderBrush="White" BorderThickness="2" RenderTransformOrigin="1.346,-0.919"> 
        <Border.Effect> 
         <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" /> 
        </Border.Effect> 
        <Image Source="{StaticResource StateCompletedIcon}"></Image> 
       </Border> 
      </Canvas> 
     </DataTemplate> 
    </Button.ContentTemplate> 
</Button> 

nun in Inhalt in die Schaltfläche Ich möchte Binding-Vorlage verwenden, so dass ich diese Benutzersteuerung in XAML-Fenster verwenden können, und stellen Sie den Inhalt Eigentum der Schaltfläche und dieses Bild wird als Bildquelle für das erste Bild festgelegt? Wenn jemand eine andere Idee hat, um es zu erreichen, bitte teilen Sie das auch.

Antwort

2

Sie können mit RelativeSource={RelativeSource TemplatedParent} an ButtonContent binden. In diesem Beispiel habe ich ein einfaches Style für die Button anstelle eines UserControl:

<Style TargetType="Button"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Canvas Background="Black"> 
        <Border CornerRadius="8" Height="100" Width="100" Canvas.Left="-52" Canvas.Top="-50" BorderThickness="0" BorderBrush="Black"> 
         <Border.Effect> 
          <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" /> 
         </Border.Effect> 
         <Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}"/> 
        </Border> 
        <Border x:Name="Update" CornerRadius="20" Width="35" Height="38" Canvas.Left="26" Canvas.Top="-65" BorderBrush="White" BorderThickness="2" RenderTransformOrigin="1.346,-0.919"> 
         <Border.Effect> 
          <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" /> 
         </Border.Effect> 
         <Image Source="{StaticResource StateCompletedIcon}"></Image> 
        </Border> 
       </Canvas> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Verbrauch:

<Button Content="C:\Whatever.png"/> 

oder

<Button Content="pack://application:,,,/Whatever.png"/> 

Ergebnis:

Example Button with Style

+0

Erstaunlich danke – ankyAS

Verwandte Themen