Je veux le contrôle de modèle qui génère dynamiquement des formes différentes selon un contrôle propriété.La de dépendance ressemble à ceci:interface utilisateur mise à jour dans UWP contrôle modèle lorsque la dépendance propriété change
<Style TargetType="local:ColorShape">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:ColorShape">
<ContentControl x:Name="shapeParent">
</ContentControl>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Il possède une propriété depdency pour la forme: shapeType publique
ShapeType
{
get { return (ShapeType)GetValue(ShapeTypeProperty); }
set { SetValue(ShapeTypeProperty, value); }
}
public static readonly DependencyProperty ShapeTypeProperty =
DependencyProperty.Register("ShapeType", typeof(ShapeType), typeof(ColorShape), new PropertyMetadata(ShapeType.Circle));
I génèrent la forme dans le procédé OnApplyTemplate
:
protected override void OnApplyTemplate()
{
var shapeParent = (ContentControl)this.GetTemplateChild("shapeParent");
var shape = GetShape(ShapeType);
shapeParent.Content = shape;
base.OnApplyTemplate();
}
Je Databind la propriété, et il fonctionne la première fois que je crée le contrôle:
<Controls:ColorShape Grid.Row="1" Width="200" Height="200" Stroke="Black" ShapeType="{x:Bind ViewModel.Shape, Mode=OneWay}" StrokeThickness="5" Fill="{x:Bind ViewModel.Color, Mode=OneWay}" />
Mais si je modifie la propriété liée à la ViewModel, qui génère une notification INotifyPropertyChange
mais ne redessine pas le modèle
J'ai essayé d'ajouter un rappel dans la propriété de dépendance du contrôle de modèle, et je peux voir qu'il actualise la propriété de dépendance avec les nouvelles valeurs liées à la propriété (dans ce cas ViewModel.Shape
), mais il ne rafraîchit pas l'interface utilisateur (n'appelle plus jamais OnApplyTemplate
). J'ai essayé d'appeler manuellement la méthode ApplyTemplate
, et l'événement OnApplyTemplate
ne se fait jamais virer.
Ignore ce ... cliquez sur Faux ... –