Я создал пользовательский элемент управления, другие члены моей команды просто размещают его на своем виде, и они могут затем динамически создавать коллекцию кнопок ObservrableCollection и привязываться к ней (ленточная панель, но сильно настраиваемая в соответствии с нашими потребностями), она обрабатывает ее размещение, стиль и т. д. Он работает просто отлично и полностью соответствует потребностям нашего проекта, однако он работает только при начальной загрузке, я немного покопался и понял, что это потому, что у меня был только PropertyChangedCallback в FrameWorkMetaData, и я не настроил обратный вызов для CoerceValueCallback, поэтому я немного покопался и установил один, но я не уверен, что именно делать - я думаю, вот в чем вопрос, сигнатура метода CoerceValueCallback возвращает объект, и я просто хочу обновить свои кнопки когда-либо список меняется. Безопасно ли игнорировать это возвращаемое значение? Может быть, какой-то код может помочь -
Вот мой PropertyChangedCallback - срабатывает при первом назначении списка кнопок
public static void ButtonListUpdated(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
int count = 0;
var grid = (source as RibbonBarUserControl).ButtonsGrid;
var buttons = e.NewValue as ObservableCollection<Button>;
if (buttons != null)
{
grid.Children.Clear();
foreach (RibbonButton b in buttons)
{
b.Margin = new Thickness(1);
b.Style = (Style)grid.FindResource("ribbonButtonStyle");
ColumnDefinition c = new ColumnDefinition();
grid.ColumnDefinitions.Add(c);
grid.Children.Add(b);
Grid.SetRow(b, 0);
Grid.SetColumn(b, count);
count = ++count;
}
}
}
Нет, это CoerceValueCallback
public static object OnButtonListModified(DependencyObject sender, Object baseValue)
{
//What to do here? Can I essentially ignore the returned object and basically
//copy what I am doing in ButtonListUpdated?
return baseValue;
}
Я видел несколько примеров в Интернете, и они куда проще - например, если день рождения меньше, чем год брака, день рождения = год брака, конечно, это немного отличается - я создаю кнопки и обновляю пользовательский интерфейс моего элемента управления.
ОК - Спасибо за любые предложения!