请原谅我在WPF中的低级别。我的项目遇到了问题。我在usercontrol中有一个公式,当用户单击选项卡时会显示给用户。我还将名称选项卡的值存入我的抽象类的属性中。我希望表格填充名称标签的相关属性。
为此,我知道我需要将绑定方法与我的textblock的text属性一起使用。我尝试了很多方法来实现它,但它们都失败了。
让我们展示一些代码,有我的xaml:
<TextBlock Name="nomEcole" Text="{Binding NomEcole, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}" Style="{StaticResource Heading2}" Margin="10,10,0,0" />
有用户控件:
public partial class EcoleControl : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void FirePropertyChanged(string name)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private string _nomEcole;
public string NomEcole
{
get { return MainWindow._RE.EcoleVisualisee.Nom; }
set
{
if (MainWindow._RE.EcoleVisualisee.Nom != value)
{
MainWindow._RE.EcoleVisualisee.Nom = value;
this.FirePropertyChanged("NomEcole");
}
}
}
public EcoleControl()
{
this.DataContext = this;
InitializeComponent();
}
}
还有我的抽象类(_nomEcoleVisualisee的值由方法更新):
class RelationEcoles
{
private string _nomEcoleVisualisee;
public string NomEcoleVisualisee
{
get { return _nomEcoleVisualisee; }
set { this._nomEcoleVisualisee = value; }
}
}
感谢您的帮助!我也想知道,我真的不知道我的项目是否像MVVM一样。
答案 0 :(得分:0)
绑定不会像这样工作,因为您的属性位于usercontrol的.cs文件中。
通常你会有EcoleViewModel
来实现INPC
并持有这样的属性:
public class EcoleViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void FirePropertyChanged(string name)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private string _nomEcole;
public string NomEcole
{
get { return MainWindow._RE.EcoleVisualisee.Nom; }
set
{
if (MainWindow._RE.EcoleVisualisee.Nom != value)
{
MainWindow._RE.EcoleVisualisee.Nom = value;
this.FirePropertyChanged("NomEcole");
}
}
}
}
然后你可以在你的usercontrol的ctor中设置DataContext
,如下所示:
public EcoleControl()
{
this.DataContext = new EcoleViewModel();
InitializeComponent();
}
现在绑定应该有效。