Можно ли привязать текст текстового блока к ассемблеру приложений?
Если у меня есть TextBlock в углу моего UserControl, можно ли привязать свойство Text к номеру версии моей сборки, который находится в AssemblyInfo.cs
WPF:
<TextBlock Text="{Binding AssemblyVersion}"/>
AssemblyInfo.cs
[assembly: AssemblyVersion("1.0.0.0")]
2 ответа:
Создайте свойство только для чтения с именем
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 весьма полезен для извлечения результатов из вызовов методов.