0

有没有机会获得:

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>

谢谢!

4

2 回答 2

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>
于 2013-10-21T16:56:04.567 回答
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。

于 2013-10-21T16:49:35.603 回答