我正在与VS 2015和WPF一起工作。 几周前,我在我的项目的App.xaml中定义了ToggleButton的模板样式,以便用户可以看到是否选中了按钮。 最初togglebutton的内容是带文本的TextBlock。 现在我想用Image替换该文本块。 此外,我在App.xaml中为图像定义了一些资源。
这是App.xaml:
<Application x:Class="WPFDesignerPrototyp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPFDesignerPrototyp"
StartupUri="MainWindow.xaml">
<Application.Resources>
<!-- Style for togglebuttons-->
<Style x:Key="toggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border x:Name="outer"
BorderBrush="Black"
BorderThickness="1"
Margin="5,5,0,0"
Opacity=".9"
Background="Transparent">
<Border x:Name="inner"
Margin="5"
BorderThickness="0"
Background="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}">
<Grid x:Name="container">
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<!--<TextBlock x:Name="display"
Grid.Row="1"
TextAlignment="Center"
Text="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"
Margin="5,2,5,2"/>-->
<Image x:Name="displayimage"
Grid.Row="1"
HorizontalAlignment="Center"
Source="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"
Margin="5,2,5,2"/>
</Grid>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter TargetName="outer" Property="Background" Value="LightBlue"/>
<Setter TargetName="outer" Property="BorderBrush" Value="Transparent"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Image x:Key="imageHorizontalAlignmentLeft" Source="C:/Utilities/VS 2015 ImageLibrary/2015_VSIcon/AlignLeft/AlignLeft_16x.png"/>
<Image x:Key="imageHorizontalAlignmentCenter" Source="C:/Utilities/VS 2015 ImageLibrary/2015_VSIcon/AlignStretchHorizontal/AlignStretchHorizontal_16x.png"/>
<Image x:Key="imageHorizontalAlignmentRight" Source="C:/Utilities/VS 2015 ImageLibrary/2015_VSIcon/AlignRight/AlignRight_16x.png"/>
</Application.Resources>
</Application>
然后 - 在我的WPF窗口中 - 我将新内容实现到我的一个togglebuttons中。
<ToggleButton x:Name="setAlignLeft" Grid.Row="1" Grid.Column="1" Content="{StaticResource imageHorizontalAlignmentLeft}" Style="{StaticResource toggleButtonStyle}" Click="setAlignLeft_Click"/>
但遗憾的是没有任何反应。 按钮的内容为空白。 所以我尝试了另一个togglebutton,没有样式toggleButtonStyle,它在那里工作。
我认为模板中一定有错,但我不知道在哪里。
有人可以帮忙吗?
提前致谢, 帕特里克
答案 0 :(得分:0)
您需要与父级Content.Source
绑定,因为Content
已经是Image。
<Image x:Name="displayimage"
Grid.Row="1"
HorizontalAlignment="Center"
Source="{Binding Content.Source, RelativeSource={RelativeSource TemplatedParent}}"
Margin="5,2,5,2"/>