.net WPF:修改公共控件模板中元素的属性
我为.net WPF:修改公共控件模板中元素的属性,.net,wpf,controltemplate,.net,Wpf,Controltemplate,我为参考资料中的按钮制作了一个控制模板,如下所示: <ControlTemplate x:Key="buttonCtrlTemp" TargetType="{x:Type Button}"> <DockPanel x:Name="dock"> <Image x:Name="btnImg" Height="16" Width="16" DockPanel.Dock="Left"/&
参考资料
中的按钮制作了一个控制模板
,如下所示:
<ControlTemplate x:Key="buttonCtrlTemp" TargetType="{x:Type Button}">
<DockPanel x:Name="dock">
<Image x:Name="btnImg" Height="16" Width="16" DockPanel.Dock="Left"/>
<TextBlock VerticalAlignment="Center" Text="{TemplateBinding Button.Content}"/>
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsMouseOver" Value="True">
<Setter TargetName="dock" Property="Background" Value="{StaticResource AppBlue}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我从按钮中引用它作为
但是,我希望不同的按钮具有不同的图像,因此需要某种方法来从按钮设置控件模板中
image
元素的源。我该怎么做呢?在这种情况下,您可以使用标记。例如:
在模板中
:
<Image x:Name="btnImg" Source="{TemplateBinding Tag}" Height="16" Width="16" DockPanel.Dock="Left" />
输出
<!-- In Resources -->
<BitmapImage x:Key="MyFind" UriSource="/BlackFind.jpg" />
<Button Name="FindTestButton" Tag="{StaticResource MyFind}" Template="{StaticResource buttonCtrlTemp}" ... />
<Window.Resources>
<BitmapImage x:Key="MyFind" UriSource="/BlackFind.jpg" />
<BitmapImage x:Key="MyAttach" UriSource="/attachment.png" />
<ControlTemplate x:Key="buttonCtrlTemp" TargetType="{x:Type Button}">
<DockPanel x:Name="dock" Background="{TemplateBinding Background}">
<Image x:Name="btnImg" Source="{TemplateBinding Tag}" Height="16" Width="16" DockPanel.Dock="Left" />
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True" />
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="dock" Property="Background" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button Name="FindTestButton" Width="100" Tag="{StaticResource MyFind}" Background="Gainsboro" Content="FindButton" Height="30" Template="{StaticResource buttonCtrlTemp}" />
<Button Name="AttachTestButton" Width="100" Tag="{StaticResource MyAttach}" Background="Gainsboro" Content="AttachButton" Height="30" Template="{StaticResource buttonCtrlTemp}" Margin="0,80,0,0" />
</Grid>