У меня есть пользовательский элемент управления, который использует On (propertyname) ValueChanged для чтения элементов из словаря и настройки параметров для этого элемента управления.
Я также хотел бы использовать этот элемент управления в качестве отдельного элемента, а не просто элемента управления с привязкой к данным.
Так почему же OnPropertyValueChanged работает только в наборе данных?
Есть ли свойства зависимостиработает только из xaml, значит ли это, что мне придется связывать со свойствами в классе контейнера?(возможно, ответил на мой собственный вопрос)
на моей главной странице.xaml
<local:spriteToggleButton x:Name="testButton" HorizontalAlignment="Center" Text="{Binding testString, ElementName=mainPage}" Correct="true" Margin="93,561,93,63" Grid.Row="1" Sprites="{Binding testSprites, ElementName=mainPage}" />
на главной странице.xaml.cs
testSprites.Add("idle", idlesprite); // a dictionary of a custom sprite object
testSprites.Add("highlighted", highlightedsprite);
testSprites.Add("selected", selectedsprite);
testString = "this is a test"; // this property is picked up by the binding.
, когда я добавляю спрайты из привязкион запускает обратный вызов измененного свойства зависимостей, но свойства внутри класса spriteToggleButton не обновляются при автономном использовании элемента управления
это мой измененный обратный вызов свойства зависимостей
private static void OnSpritesPropertyValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as spriteToggleButton;
var sprites = e.NewValue as Dictionary<string, Quiz.Sprite>;
control.idleSprite = sprites["idle"];
control.selectedSprite = sprites["selected"];
control.highlightedSprite = sprites["highlighted"];
}
это внутри моего spriteToggleButton
<local:spriteView x:Name="Idle" Width="294" Height="57" HorizontalAlignment="Center" Sprite="{Binding idleSprite, ElementName=toggleSpriteControl}" />
...
Sprite также является свойством зависимости в этом элементе управления