是否有机会获得:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
来自XAML代码?
<Window x:Class="TestWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title=" **Here** " Height="700" Width="660"
Name="myWindow" xmlns:my="clr-namespace:TestWpf">
</Window>
谢谢!
答案 0 :(得分:1)
您可以使用MarkupExtension:
public class Version : MarkupExtension
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
return System.Reflection.Assembly
.GetExecutingAssembly().GetName().Version.ToString();
}
}
并以这种方式使用它:
<Window x:Class="TestWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{my:Version}"
Height="700" Width="660"
Name="myWindow"
xmlns:my="clr-namespace:TestWpf">
</Window>
答案 1 :(得分:0)
在Window
的代码隐藏中创建一个返回该字符串的属性:
public string Version
{
get
{
return System.Reflection.Assembly
.GetExecutingAssembly().GetName().Version.ToString();
}
}
然后从您的XAML代码中引用它:
<Window x:Class="TestWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Version, RelativeSource={RelativeSource Self}}"
Height="700" Width="660"
Name="myWindow"
xmlns:my="clr-namespace:TestWpf">
</Window>
据我所知,如果程序当前直接在XAML代码中运行,则无法检索版本。您将始终必须使用某种背景代码。这可以是代码隐藏,也可以是视图模型,MarkupExtension或其他类型的DataContext。