【发布时间】:2014-08-07 19:21:51
【问题描述】:
我有一个带有标签的自定义控件。该控件有一个属性Label,如下所示:
public string Label
{
get { return (string)GetValue(LabelProperty); }
set
{
label.Text = value;
SetValue(LabelProperty, value);
}
}
public static DependencyProperty LabelProperty = DependencyProperty.Register("Label", typeof(string), typeof(SuperButton), new PropertyMetadata(null));
注意,带有小 l 的标签是一个内部文本块。 SuperButton 是控件的名称。
然后我有这个简单的对象:
class Student : INotifyPropertyChanged
{
public string _name;
public string Name
{
get { return _name; }
set { _name = value; OnPropertyChanged( new PropertyChangedEventArgs("Name")); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
}
然后我用这个 XAML 绑定:
<UIFragments:SuperButton Margin="531,354,555,367" Label="{Binding Name}"></UIFragments:SuperButton>
然后我将它与按钮实例放在同一页面中
Student s = new Student { Name = "John Smith" };
DataContext = s;
我尝试将控件的数据上下文设置为自身,但没有任何效果。将标签设置为字符串有效。
如果我使用数据绑定,则永远不会触发 set{} 块...
【问题讨论】:
标签: c# xaml windows-runtime winrt-xaml