这是我的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
答案 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
中指定DataContextxmlns: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