1

我的模型为:

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>

但我看不到值

4

2 回答 2

2

第一种方式:

尝试 tro 替换<UserControl.Resources><UserControl.DataContext> ... 并删除“ x:Key="forecastVersionInfo"”。

第二种方式: 或设置DataContext="{StaticResource forecastVersionInfo}"在您的文本块上。

第三种方式: 根据此 MSDN 页面,在您的文本块绑定上设置 Source 属性:

Text="{Binding VersionNumber, Source={StaticResource forecastVersionInfo}}"
于 2013-01-11T07:34:26.863 回答
0

您没有设置 DataContext

<UserControl.DataContext>
   <AppInfo:ApplicationInfoViewModel />
</UserControl.DataContext>

如果要引用资源,可以将其设置为Grid或将资源移动到App.ResourcesDataContext作为属性应用UserControl

<Grid DataContext="{Binding Path={StaticResource forecastVersionInfo}}">
    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding VersionNumber}" VerticalAlignment="Bottom"/>
</Grid>
于 2013-01-11T07:35:54.483 回答