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"」を削除してみてください。

2番目の方法:DataContext="{StaticResource forecastVersionInfo}"またはtextBlockに 設定します。

3番目の方法:このMSDNページに よると、テキストブロックバインディングにSourceプロパティを設定します:

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

DataContextを設定していません

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

リソースを参照する場合は、リソースをオンに設定するGridか、リソースをに移動して属性としてApp.Resources適用できます。DataContextUserControl

<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 に答える