Ner*_*zIT 0 .net c# data-binding wpf mvvm
所以我刚刚进入数据绑定和MVVM,我遇到了一个小问题.
我有一个名为的单独类的WPF项目 Player
在我的MainWindow班级中,我将设置为该类DataContext的实例Player
public partial class MainWindow : Window
{
Player player = new Player();
public MainWindow()
{
InitializeComponent();
DataContext = player;
}
}
Run Code Online (Sandbox Code Playgroud)
在那个类中,我有一个属性,我在其中设置构造函数中的值.
public class Player : INotifyPropertyChanged
{
private string _Firstname;
public Player()
{
_Firstname = "William";
}
public string Firstname
{
get { return _Firstname; }
set { _Firstname = value; }
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
然后在XAML中有一些简单的数据绑定逻辑 TextBox
<TextBox Name="TbName" HorizontalAlignment="Left" Height="23" Margin="243,119,0,0" TextWrapping="Wrap" Text="{Binding Path=Firstname}" VerticalAlignment="Top" Width="120"/>
Run Code Online (Sandbox Code Playgroud)
现在..让我们说我有另一个叫做我不知道的类...... Acheivments ..我如何将Text另一个控件设置为该类的属性?我将不得不设置另一个DataContext,我不知道如何设置多个datacontexts.
问题:如何正确设置两个datacontexts,以便将不同的类绑定到不同的控件?
您只能将DataContext属性设置为单个对象,但此对象的类型可能包含您可以绑定到的多个属性:
class ViewModel
{
public Player Player { get; } = new Player();
public Achievement Achievement { get; } = new Achievement();
}
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<TextBox Text="{Binding Path=Person.Firstname}" />
...
<TextBlock Text="{Binding Achievement.SomeProperty}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |