我创建了一个按钮模板,其中包含一个图像和一个文本块。由于我想改变两者的外观,我认为它们需要在模板中。但是,当然,并非此模板的每个实例都应呈现相同的文本和图像。
到目前为止,我在 TextBlock / Image 的“文本”/“源”值字段中发现了一个名为“使用自定义路径表达式”的有前途的属性:
Data Binding... > Element Property > Use a custom path expression
我现在想在按钮的实例上设置这个值。我已经尝试myText="Lorem Ipsum"
在 Button 的 XAML 中手动插入 a ,但这似乎不起作用。
预先感谢您的帮助!
更新:这就是 XAML 的样子:
<TextBlock [...] Text="{Binding myText, ElementName={x:Null}, FallbackValue=Lorem}"/>
我如何访问或修改它,以便可以访问它?
更新 2: TextBlock 和 Image 已经存在绑定。目前,Button 的 XAML 如下所示:
<s:SurfaceButton Command="{Binding SearchCustomCommand}" Style="{DynamicResource BasicButton}">
<StackPanel Orientation="Vertical" Height="60" Width="48" IsHitTestVisible="False">
<Image Source="{StaticResource ImageSourceToolboxSearchIcon}"
[...]
Stretch="Uniform" />
<TextBlock Text="{lex:LocText ToolboxButtonSearchesCustom}"
FontFamily="{DynamicResource button.font}"
[...]
FontSize="{DynamicResource button.size}"
Foreground="{DynamicResource button.color.default}"/>
</StackPanel>
</s:SurfaceButton>
我现在想将图像和文本框提取到模板(也已经存在),所以我可以以这样的方式引用按钮(模板中包含所有关于大小和颜色等的信息,并且只有对按钮实际实例中的资源 - 能够单独更改 echt 按钮的图像/文本):
<s:SurfaceButton
Command="{Binding SearchPopularCommand}"
Style="{DynamicResource ToolboxButtonBig}"
ImageSource="{StaticResource ImageSourceToolboxSearchIcon}"
TextBlockSource="{lex:LocText ToolboxButtonSearchesCustom}"/>
我已经将 StackPanel 的整个 XAML 以及包含的 TextBlock 和 Image 复制到了模板中。现在这些都显示在每个按钮上(这很好),但我无法更改它们的内容。
如果描述很差,我很抱歉 - 我对 WPF 很陌生......
更新 3:经过进一步研究,我发现了与我类似的问题 - 这显然比我能更好地描述问题: