我无法弄清楚为什么我的大型项目中的绑定更改无法正常工作。我把它简化为一个仍然不起作用的示例项目。我想继续以我现在的方式设置datacontext,如果可能的话,因为这是另一个项目的工作方式。使用以下代码,SomeText中的文本未显示在文本框中。我该如何解决这个问题?
代码背后:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
数据类:
public class ViewModel
{
public string SomeText = "This is some text.";
}
主要用户控制:
<UserControl xmlns:ig="http://schemas.infragistics.com/xaml" x:Class="XamGridVisibilityBindingTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:XamGridVisibilityBindingTest="clr-namespace:XamGridVisibilityBindingTest" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<TextBox Text="{Binding SomeText}" BorderBrush="#FFE80F0F" Width="100" Height="50"> </TextBox>
</Grid>
</UserControl>
编辑:我只是尝试进行单向绑定。
答案 0 :(得分:2)
您需要使用属性,并使您的VM继承INotifyPropertyChanged并在SomeText更改时引发PropertyChanged事件:
public class ViewModel : INotifyPropertyChanged
{
private string someText;
public event PropertyChangedEventHandler PropertyChanged;
public string SomeText
{
get { return someText; }
set
{
someText = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SomeText"));
}
}
}
public ViewModel()
{
SomeText = "This is some text.";
}
}
答案 1 :(得分:0)
我想通了,你只能绑定到属性!
public class ViewModel
{
public string SomeText { get; set; }
public ViewModel()
{
SomeText = "This is some text.";
}
}