这是一个两部分问题,可能有类似的答案。
我想在资源字典中创建一个标签的样式,该标签首先包含图像,然后是文本。文本,作为TextBlock有自己的风格(没有问题)。这就是我所拥有的
标签样式:
<Style x:Key="LabelStyle" TargetType="Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<TextBlock Style="{StaticResource TextBlockStyle}">
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
TextBlockStyle:
<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="25 0 0 2.5"/>
<Setter Property="Width" Value="Auto"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="TextDecorations" Value="Underline"/>
<Setter Property="Foreground" Value="Blue"/>
<Setter Property="Cursor" Value="Hand"/>
</Trigger>
</Style.Triggers>
</Style>
现在我的问题是当我向我的Control添加一个新标签(例如:Window)并指定文本(例如:Create)时,不会显示任何文字。例如:
<Label Style="{StaticResource LabelStyle}">Create</Label>
文本创建没有显示,但是如果我放入我所显示的LabelStyle-&gt; TextBlock-&gt;文本,但它不好,因为我想为不同的标签更改它。有没有办法将我的Label文本绑定到我的(Inside Style)TextBlock.Text ???
我的另一个问题是相同的,但对于图像和Image.Source。
谢谢: - )
编辑:
这就是我现在与H.B.答案已实施
<Style x:Key="LabelStyle" TargetType="Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Grid>
<StackPanel Orientation="Horizontal">
<Image Source="/Resources/Create.png" />
<TextBlock Style="{StaticResource TextBlockStyle}" Text="{TemplateBinding Content}"/>
</StackPanel>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
请注意,这是在资源字典中。对于TextBlock,它很棒。但对于图像来说,这是一个不同的故事。我想要与'Text =“{TemplateBinding Content}'相同,但是对于Image.Source并在我添加标签时设置它在我的控制中的路径。可能因为它是多个内容我将不得不写更多代码而不是我'我愿意,但我会满足于最简单,最干净的答案。
H.B。再次感谢,至于超链接,这仍然在开发中,它不会是一个超级链接,只是一些带有动画的自定义菜单按钮,所以对用户来说不是那么无聊:P
答案 0 :(得分:1)
您的Label.Template
不再将Content
(您设置为Label
)的"Create"
媒体资源与任何内部部分相关联。要解决此问题,您可以绑定TextBlock.Text
,例如:
<ControlTemplate TargetType="Label">
<TextBlock Style="{StaticResource TextBlockStyle}"
Text="{TemplateBinding Content}"/>
</ControlTemplate>
(我只是注意到你让Label看起来像一个超链接,你确实认识到there already is a class,对吗?)