Nie testowałem, ale jestem całkiem pewny, że aktualnie zaakceptowana odpowiedź z AresAvatar nie zadziała, jeśli zmieniasz rozmiar wierszy/kolumn za pomocą strzałek na klawiaturze (przez skupienie się na rozdzielaczu siatki). Jest to rzadki, ale możliwy przypadek, który należy przewidzieć w swoim wniosku.
kiedy rozdzielacz siatka jest przesuwana (przez drag'n'drop lub za pomocą klawiszy strzałek), zmienia Width
/Height
właściwości zależność ColumnDefinition
/RowDefinition
siatki. Możesz łatwo zarejestrować obsługi na tej zmianie własności:
var heightDescriptor = DependencyPropertyDescriptor.FromProperty(RowDefinition.HeightProperty, typeof(ItemsControl));
heightDescriptor.AddValueChanged(myGrid.RowDefinition[0], HeightChanged);
(Spowoduje to urywek na zmianę rozmiaru instancji toru w pierwszym rzędzie na starcie).
Następnie można obsłużyć zmianę rozmiaru w programie obsługi, który będzie działał w każdym przypadku.
private void HeightChanged(object sender, EventArgs e)
{
// TODO: handle row resize
}
Generalnie, to naprawdę nie powinni polegać na działaniu wejściowej użytkownika (wodzącego mysz, klawiatura wejść ...) do obsługi logiczne lub wizualnych działań/wydarzenia, ponieważ tam są prawie zawsze zrobić na kilka sposobów te same czynności przy użyciu różnych danych wejściowych (myszy, klawiatury, ekran dotykowy, łatwość obsługi narzędzi ...).
Przeczytaj to, nawet jeśli nie martwisz się klawiaturą, ponieważ jest to powszechny błąd w projektowaniu obsługi niewłaściwego zdarzenia (jedno z działań wejściowych, zamiast ogólnego wyniku działania). – Benlitz
Następnie opracuj :) I Ciekaw jestem, dlaczego preferowałbyś nierozszerzalną metodę opartą na pojedynczym działaniu użytkownika, zajmującą się odpowiednią zmianą właściwości, podczas gdy oba mają ten sam koszt wdrożenia. Załóżmy, że po zaimplementowaniu tego, zostaniesz poproszony o dodanie przycisku, który przywróci domyślny rozmiar wiersza. Zmiana programowo programu nie byłaby możliwa. Dlatego uważam, że takie podejście nie jest dobre; może łatwo wprowadzić błędne błędy w twoim interfejsie. Jeśli operacja wykonywana przez program obsługi zmiany rozmiaru wiersza nie jest wyraźnie widoczna, może nawet nie zauważyć problemu przez kilka tygodni. – Benlitz
Jako przykład, reagowanie na kciuk DragDelta zamiast zmiany rozmiaru ma znacznie inny efekt animacji - sprawdź za pomocą Snoop i zobacz, jak różne są komunikaty różnicowe. Wreszcie, o ile klawiatura nie może być użyta do zmiany rozmiaru GridSplitter (focusable = false), to i tak jest to punkt sporny. –