2016-08-30 1 views
1

私はWPFの初心者で、WPFで子を親にバインドする方法を知りたがっています。それをより明確にするために:私はXAMLウィンドウでこのユーザーコントロールを使用してのcontentプロパティを設定することができるようにバインディングテンプレートを使用したいボタンのコンテンツに今子を親にバインドする

<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> 

のようなユーザーコントロールを持っていますボタンとその画像は最初の画像の画像ソースとして設定されますか? もしそれを達成するための他のアイデアがあれば、それも共有してください。

答えて

2

ButtonContentには、RelativeSource={RelativeSource TemplatedParent}でバインドできます。

<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> 

使用法:

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

または

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

結果:

Example Button with Style

この例では、私が代わりに UserControlButtonのための簡単な Styleを使用しました
+0

ありがとう – ankyAS

関連する問題