Wpf 带有绑定字符串格式问题的自定义按钮模板
在处理按钮模板时,我遇到了绑定字符串格式问题。给你 --我设置了一个按钮,将给定的工具提示设置为字符串。我喜欢用它来指定绑定中的图像名称。然后我将其应用于一个名为ImageButton的按钮样式Wpf 带有绑定字符串格式问题的自定义按钮模板,wpf,binding,string-formatting,Wpf,Binding,String Formatting,在处理按钮模板时,我遇到了绑定字符串格式问题。给你 --我设置了一个按钮,将给定的工具提示设置为字符串。我喜欢用它来指定绑定中的图像名称。然后我将其应用于一个名为ImageButton的按钮样式 <Button ToolTip="Minimize" Height="34" Style="{StaticResource ImageButton}" Margin="220,36,125,371" />; ; --这是样式中的代码。我喜欢使用绑定中的图像名称,并提供完整的图像路径。它
<Button ToolTip="Minimize" Height="34" Style="{StaticResource ImageButton}" Margin="220,36,125,371" />;
;
--这是样式中的代码。我喜欢使用绑定中的图像名称,并提供完整的图像路径。它应该是这样工作的,
。是的,我确实有这样一个映像,如果我只是在没有绑定的情况下放置xml代码,它将非常有用
<Image x:Name="ButtonImage" Source="{Binding ToolTip, RelativeSource={RelativeSource TemplatedParent}, StringFormat={}Images/{0}-Normal.png}" />
但是装订并没有像我预期的那样有效。图像无法正确显示。如果我把图像全名放在工具提示中,那么它工作正常。看起来StringFormat已被忽略
任何帮助都将不胜感激。提前谢谢
感谢dbaseman的回复。我知道我可以通过使用转换器来实现它。但由于我认为StringFormat更容易应用,所以我尝试了这个方法 我在这里还发现了一个回复,它说-StringFormat在绑定到string属性时使用,而控件中的Text属性是object类型,因此StringFormat被忽略
它应该是设计的。下面的代码起作用。因为文本属性是字符串类型
<TextBlock Text="{Binding ToolTip, RelativeSource={RelativeSource Self}, StringFormat={}Images/{0}-Normal.png}" ToolTip="Minimize" />
这很有趣——我不确定这是一个bug,还是出于设计。不过,您可以通过使用转换器
而不是StringFormat
来解决此问题
public class ImageNameConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return string.Format("Images/{0}-Normal.png", value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后当然:
<local:ImageNameConverter x:Key="ImageNameConverter" />
以及:
<Image x:Name="ButtonImage"
Source="{Binding ToolTip,
RelativeSource={RelativeSource TemplatedParent},
Converter="{StaticResource ImageNameConverter}}" />