我有一个简单的类abc
class abc
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
public abc(string d, string e, string f)
{
a = d;
b = e;
c = f;
}
}
public MainPage()
{
InitializeComponent();
abc obj = new abc("abc1", "abc2", "abc3");
LayoutRoot.DataContext = obj;
}
和一个包含三个文本框的网格1 2 3我试图将类的这3个属性绑定到网格用户控件。
<Grid x:Name="LayoutRoot" Background="White">
<TextBox Height="27" HorizontalAlignment="Left" Margin="125,86,0,0" Name="textBox1" Text="{Binding Path= a}" VerticalAlignment="Top" Width="120" />
<TextBox Height="25" HorizontalAlignment="Left" Margin="21,192,0,83" Name="textBox2" Text="{Binding Path= b}" Width="120" />
<TextBox Height="25" HorizontalAlignment="Left" Margin="250,192,0,0" Name="textBox3" Text="{Binding Path= c}" VerticalAlignment="Top" Width="120" />
</Grid>
它没有显示任何错误,但它没有向屏幕显示任何输出,它创建了什么具体问题?
答案 0 :(得分:0)
首先你的类型'abc'应该实现INotifyPropertyChanged。
public class abc : INotifyPropertyChanged
{
...
}
然后你需要举起INotifyPropertyChanged
。PropertyChanged事件
private void RaiseProperty(string propertyName)
{
var handle = PropertyChanged;
if(handle != null)
{
handle(this, new PropertyChangedEventArgs(propertyName));
}
}
private string _a;
public string a { get{ return _a;} set{ _a = value; RaiseProperty("a"); } }
....
如果您正在使用CLR属性,这应该适用于您需要一种通知Binding的机制;该机制由INotifyPropertyChanged
接口
答案 1 :(得分:0)
尝试不要在绑定表达式中使用“Path =”(带空格)。尝试使用:
Text="{Binding a}"
“Path”隐藏在绑定表达式中。您需要阅读有关绑定的一些资源。