如何将属性绑定到文本块/文本框?

时间:2016-08-02 04:21:45

标签: wpf mvvm

这是我的DemoModel.cs类

    public int Age  {get; set;}

DemoViewModel.cs

DemoViewModel() 
{
    DemoModel dm = new DemoModel();
    dm.Age = 22;
}

我的观点

  <TextBlock FontSize="20" Text="{Binding Age,Mode=OneWay}"></TextBlock>

当我运行上述程序时,我没有得到任何绑定到我的文本块...请发布您宝贵的建议 TIA

2 个答案:

答案 0 :(得分:0)

试试这个。它应该工作。 您需要实施INotifyPropertyChanged并引发PropertyChanged事件以通知视图您的媒体资源已更改。 现在将Age属性绑定到TextBlock,它应该可以正常工作。

public class DemoViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private int age;

    public int Age
    {
        get { return age; }
        set
        {
           if (value != age)
           {
              age = value;
              NotifyPropertyChanged("Age");
           }     
        }
    }

    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

同时确保您的观看次数DataContext设置为DemoViewModel

答案 1 :(得分:0)

在视图中

在View

中指定DataContext
xmlns:local="clr-namespace:Demo.ViewModel" 
xmlns:views="clr-namespace:Demo.View"
xmlns:viewModel="clr-namespace:Demo.ViewModel"
mc:Ignorable="d" Title="MainWindow"
Height="350" Width="525"> 
<window.DataContext>
 <viewModel:DemoViewModel/>
</window.DataContext>
<grid>
<TextBlock FontSize="20" Text="{Binding Age,Mode=OneWay}"></TextBlock>
</grid>

在ViewModel中

public class DemoViewModel : INotifyPropertyChanged
{
 public event PropertyChangedEventHandler PropertyChanged;

 private int age;

 public int Age
{
get { return age; }
set
{
   if (value != age)
   {
      age = value;
      NotifyPropertyChanged("Age");
   }     
}
}

private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
    PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}

在模型中

public int Age  {get; set;}

通常这可以解决您的问题。如果你正在使用,那么尽量避免在视图后面编写代码。在我的示例中,在xaml本身设置datacontext