绑定字符串格式不起作用
Binding string format not working
我有一个应用程序,启动时用户需要选择课程主题和课程名称。课程主题是从软件的应用程序数据文件夹中的一个文件夹中收集的。
我想像 Office 在 Word 中那样显示主题,例如,您可以在其中选择模板作为开始。在主题文件夹中是一个 png,它是我要显示的主题的图片。如果我像这样复制并粘贴直接路径:
<Image Width="600" Height="400" HorizontalAlignment="Center" Source="C:\Users\james\AppData\Roaming\Jenison\Perform\Themes\TemplateThemes\JenisonOnyxFullScreen\thumbnail.png" />
它工作正常。但显然每个用户都会有不同的用户名,所以我不能这样做。所以我正在尝试这种方式:
<Image Width="600" Height="400" HorizontalAlignment="Center" Source="{Binding ThumbnailPath, StringFormat='pack://application:,,,/Themes/TemplateThemes/{0}'}" />
绑定ThumbnailPath returns JenisonOnyxFullScreen\thumbnail.png 所以上面是pack://application:,/Themes/TemplateThemes/JenisonOnyxFullScreen\thumbnail.png 我也加了这个到一个文本块,路径似乎没问题。但是图片不是这样显示的
任何帮助将不胜感激。
一位工作同事提出了一些第一次就完美运行的建议。我像这样在图像中添加了事件设置器:
<Image Width="450" Height="400" HorizontalAlignment="Center" >
<Image.Style>
<Style TargetType="Image">
<EventSetter Event="Loaded" Handler="ThemeImagePath">
</EventSetter>
</Style>
</Image.Style>
</Image>
然后在代码隐藏中添加了一个名为ThemeImagePath的方法
public void ThemeImagePath(object sender, RoutedEventArgs e)
{
var Image = (Image)sender;
var Theme = Image.DataContext as IPerformTheme;
Image.Source = ImageHelper.BitmapSourceFromPath(new Uri(Model.ApplicationRoots.ThemeRoot + "/TemplateThemes/" + Theme.Name + "/thumbnail.png"));
}
像这样解决了字符串格式的图像绑定
<Image x:Name="im" Width="600" Height="400" HorizontalAlignment="Center" Source="{Binding ElementName=test, Path=Text}" />
<TextBlock x:Name="test" Background="Red" Text="{Binding ThumbnailPath, StringFormat=pack://application:\,\,\,/WpfApplication1;component/Images/\{0\}}" HorizontalAlignment="Left" Margin="20,216,0,0" VerticalAlignment="Top" Height="43"/>
我有一个应用程序,启动时用户需要选择课程主题和课程名称。课程主题是从软件的应用程序数据文件夹中的一个文件夹中收集的。
我想像 Office 在 Word 中那样显示主题,例如,您可以在其中选择模板作为开始。在主题文件夹中是一个 png,它是我要显示的主题的图片。如果我像这样复制并粘贴直接路径:
<Image Width="600" Height="400" HorizontalAlignment="Center" Source="C:\Users\james\AppData\Roaming\Jenison\Perform\Themes\TemplateThemes\JenisonOnyxFullScreen\thumbnail.png" />
它工作正常。但显然每个用户都会有不同的用户名,所以我不能这样做。所以我正在尝试这种方式:
<Image Width="600" Height="400" HorizontalAlignment="Center" Source="{Binding ThumbnailPath, StringFormat='pack://application:,,,/Themes/TemplateThemes/{0}'}" />
绑定ThumbnailPath returns JenisonOnyxFullScreen\thumbnail.png 所以上面是pack://application:,/Themes/TemplateThemes/JenisonOnyxFullScreen\thumbnail.png 我也加了这个到一个文本块,路径似乎没问题。但是图片不是这样显示的
任何帮助将不胜感激。
一位工作同事提出了一些第一次就完美运行的建议。我像这样在图像中添加了事件设置器:
<Image Width="450" Height="400" HorizontalAlignment="Center" >
<Image.Style>
<Style TargetType="Image">
<EventSetter Event="Loaded" Handler="ThemeImagePath">
</EventSetter>
</Style>
</Image.Style>
</Image>
然后在代码隐藏中添加了一个名为ThemeImagePath的方法
public void ThemeImagePath(object sender, RoutedEventArgs e)
{
var Image = (Image)sender;
var Theme = Image.DataContext as IPerformTheme;
Image.Source = ImageHelper.BitmapSourceFromPath(new Uri(Model.ApplicationRoots.ThemeRoot + "/TemplateThemes/" + Theme.Name + "/thumbnail.png"));
}
像这样解决了字符串格式的图像绑定
<Image x:Name="im" Width="600" Height="400" HorizontalAlignment="Center" Source="{Binding ElementName=test, Path=Text}" />
<TextBlock x:Name="test" Background="Red" Text="{Binding ThumbnailPath, StringFormat=pack://application:\,\,\,/WpfApplication1;component/Images/\{0\}}" HorizontalAlignment="Left" Margin="20,216,0,0" VerticalAlignment="Top" Height="43"/>