1

我有一个简单的类 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>

它没有显示任何错误,但没有显示任何输出到屏幕,它产生了什么具体问题?

4

2 回答 2

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 属性,这应该可以工作,因为您需要一种机制来通知绑定;并且该机制由INotifyPropertyChanged接口提供

于 2012-05-29T05:55:20.403 回答
0

尽量不要在绑定表达式中使用“Path=”(带空格)。尝试使用:

Text="{Binding a}"

“路径”隐藏在绑定表达式中。您需要阅读一些有关绑定的资源。

于 2012-05-29T07:22:38.950 回答