Część,
jak powiązać dane z dwóch różnych klas w pliku .xaml?
W pliku .cs mam klasę główną (MainWindow) oraz moją klasę Klasa_2:
public partial class MainWindow : Window, INotifyPropertyChanged
{
Klasa_2 ob = new Klasa_2("x");
public MainWindow()
{
InitializeComponent();
}
private string name_1;
public string Name_1
{
get { return name_1; }
}
private void Label_1_MouseDown(object sender, MouseButtonEventArgs e)
{
Label l = e.Source as Label;
if (l != null)
{
name_1 = "abc";
RaisePropertyChanged("Name_1");
}
}
private void Label_2_MouseDown(object sender, MouseButtonEventArgs e)
{
ob.MouseDown(e);
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
public class Klasa_2 : INotifyPropertyChanged
{
private string name_2;
public string Name_2
{
get { return name_2; }
set { name_2 = value; }
}
public Klasa_2(string name)
{
Name_2 = name_2;
}
public void MouseDown(MouseButtonEventArgs e)
{
Label l = e.Source as Label;
if (l != null)
{
name_2 = "xyz";
RaisePropertyChanged("Name_2");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
I teraz chciałbym w XAML powiązać właściwości z tych dwóch klas, mniej więcej tak:
<Canvas>
<Label Content="{Binding Source=MainWindow.Name_1}" MouseDown="Label_1_MouseDown"/>
<Label Content="{Binding Source=Klasa_2.Name_2}" MouseDown="Label_2_MouseDown" Canvas.Top="50"/>
</Canvas>
Lecz taki sposób nie działa. Czy takie wiązanie jest w ogóle możliwe?