我的模型为:
namespace Forecast.MVVM.WPF.ViewModel
{
public class ApplicationInfoViewModel
{
private string versionNumber;
public ApplicationInfoViewModel()
{
versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
public string VersionNumber
{
get { return versionNumber; }
set { versionNumber = value; }
}
}
我的观点我正在设置datContext并将值设为;
<UserControl .... xmlns:AppInfo="clr-namespace:Forecast.MVVM.WPF.ViewModel" .../>
<UserControl.Resources>
<AppInfo:ApplicationInfoViewModel x:Key="forecastVersionInfo"/>
</UserControl.Resources>
<Grid>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding VersionNumber}" VerticalAlignment="Bottom"/>
</Grid>
但我无法看到值
答案 0 :(得分:2)
第一路:
尝试<UserControl.Resources>
替换<UserControl.DataContext>
...并删除“x:Key="forecastVersionInfo"
”。
第二路:
或者在textBlock上设置DataContext="{StaticResource forecastVersionInfo}"
。
第三种方式: 根据{{3}},在文本块绑定上设置Source属性:
Text="{Binding VersionNumber, Source={StaticResource forecastVersionInfo}}"
答案 1 :(得分:0)
您没有设置DataContext
<UserControl.DataContext>
<AppInfo:ApplicationInfoViewModel />
</UserControl.DataContext>
如果您想引用资源,可以在Grid
上设置资源,或将资源移至App.Resources
并将DataContext
作为属性应用于UserControl
<Grid DataContext="{Binding Path={StaticResource forecastVersionInfo}}">
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding VersionNumber}" VerticalAlignment="Bottom"/>
</Grid>