jednak działa to na cały tekst, a moim celem jest, aby działało to tylko na zaznaczonym tekście. Dopiero zaczynam się bawić z bindingami i moim pytaniem jest czy jest to możliwe? Drugim problemem jest to, aby w głównym oknie pokazała się nazwa użytkownika, którą uzyskuję w innym oknie. Klasa do tego dziedziczy po INotifyPropertyChanged.
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public string Login
{
get { return login; }
set
{
login = value;
NotifyPropertyChanged("Login");
}
}
* - po przemyśleniu dochodzę do wniosku, że trochę się pospieszyłem z tą odpowiedzią. Implementacja INotifyPropertyChanged powinna wystarczyć, ale musisz pamiętać, by ustawić DataContext okna na drugie, które implementuje ten kawałek kodu, który podałeś.
Przy założeniu, że okno do pobierania loginu jest wyświetlane przez główne okno, można to zrobić tak:
LoginWnd.xaml :
LoginWnd.xaml.cs :
class LoginWnd : Window
{
private string login = string.Empty;
public string Login{ get {...} set {...} } //Tak jak to implementowałeś wyżej
public LoginWnd()
{
//...
this.DataContext = this;
}
//...
} [/code]
[b]MainWnd.xaml[/b] jest wręcz identyczny co [b]LoginWnd.xaml[/b], więc pominę.
[b]MainWnd.xaml.cs[/b]:
[code=php]//…private LoginWnd loginWnd = null;public MainWnd() {//…this.loginWnd = new LoginWnd();this.DataContext = this.loginWnd;// i dodatkowo gdzieś pokazanie LoginWnd}
To NIE JEST sposób najlepszy. Najlepiej byłoby wydzielić login do osobnej klasy i to nią żonglować między _DataContext_ami, ale to już możesz sam zrobić. Ogólną zasadę działania znasz.