Можно ли привязать текст TextBlock к приложению AssemblyVersion?
Если у меня есть TextBlock в углу моего UserControl, можно ли привязать свойство Text к моему номеру версии сборки, который находится в AssemblyInfo.cs
WPF:
<TextBlock Text="{Binding AssemblyVersion}"/>
AssemblyInfo.cs
[assembly: AssemblyVersion("1.0.0.0")]
3 ответа
Решение
Создайте свойство только для чтения с именем AssemblyVersion
и связать это.
public Version AssemblyVersion
{
get
{
return Assembly.GetEntryAssembly().GetName().Version;
}
}
Вот чистый подход XAML
<TextBlock xmlns:ref="clr-namespace:System.Reflection;assembly=mscorlib">
<TextBlock.Text>
<Binding Path="Version">
<Binding.Source>
<ObjectDataProvider MethodName="GetName">
<ObjectDataProvider.ObjectInstance>
<ObjectDataProvider MethodName="GetExecutingAssembly"
ObjectType="{x:Type ref:Assembly}" />
</ObjectDataProvider.ObjectInstance>
</ObjectDataProvider>
</Binding.Source>
</Binding>
</TextBlock.Text>
</TextBlock>
в этом примере мы используем ObjectDataProvider
чтобы получить желаемую (выполняемую или, может быть, текущую) сборку, за которой следует ее версия.
ObjectDataProvider весьма полезен для получения результатов от вызовов методов.
Чтобы получить версию сборки, вы можете использовать это в коде:
using System.Reflection;
using System.Diagnostics;
#region - Version -
/// <summary>
/// Get the FileVersion
/// </summary>
public static string Version => FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;
#endregion - Version -
и в коде Xaml:
<TextBlock Text="{Binding Version}"/>
это все