Mam takie zadanko do zrobienia i nie wiem za bardzo jak to zrobić.
"Zmodyfikuj zachowanie ZamkniecieOknaPoNacisnieciuKlawisza w taki sposób, żeby własność Klawisz była własnością zależności i żeby metoda OnAttached przestała być używana."
public class ZamknięcieOknaPoNaciśnieciuKlawisza : Behavior<Window>
{
public Key Klawisz { get; set; }
protected override void OnAttached()
{
Window window = this.AssociatedObject;
if (window != null) window.PreviewKeyDown += Window_PreviewKeyDown;
}
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
Window window = (Window)sender;
if (e.Key == Klawisz) window.Close();
}
}
Nie wiem czy podążam w dobrym kierunku ale na tą chwile mam coś takiego:
public class ZamkniecieOknaPoNacisnieciuKlawisza : Behavior<Window>
{
public static readonly DependencyProperty KlawiszProperty =
DependencyProperty.Register(
"ZamniecieZachowanie",
typeof(Key),
typeof(ZamkniecieOknaPoNacisnieciuKlawisza),
new PropertyMetadata(Key.None, KlawiszZmieniony));
public Key Klawisz
{
get { return (Key)GetValue(KlawiszProperty); }
set { SetValue(KlawiszProperty, value); }
}
public static void KlawiszZmieniony(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Window window = (d as ZamkniecieOknaPoNacisnieciuKlawisza).AssociatedObject;
KeyEventHandler Window_PreviewKeyDown = (object sender, KeyEventArgs _e) =>
{
window.Close();
};
if (e.OldValue != null) ((Window)e.OldValue).PreviewKeyDown -= Window_PreviewKeyDown;
if (e.NewValue != null) ((Window)e.NewValue).PreviewKeyDown += Window_PreviewKeyDown;
}
Nikt nie pomoże?