使用TextBlock绑定不起作用

时间:2013-01-11 07:32:51

标签: wpf c#-4.0 data-binding binding

我的模型为:

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>

但我无法看到值

2 个答案:

答案 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>