J'ai créé un nouveau UserContol avec un bouton à l'intérieur. Je voulais lier la commande de bouton à une propriété de dépendance du nouveau contrôle utilisateur comme ceci.La liaison de commande de bouton ne fonctionne pas
<Grid>
<Button Name="Button1" Command="{Binding Button1Command}" />
</Grid>
c'est le DP sur le UserControl contenant:
public ICommand Button1Command
{
get { return (ICommand)GetValue(Button1CommandProperty); }
set { SetValue(Button1CommandProperty, value); }
}
public static readonly DependencyProperty Button1CommandProperty =
DependencyProperty.Register("Button1Command", typeof(ICommand), typeof(BptCellTemplate), new FrameworkPropertyMetadata(null));
lorsque je tente d'utiliser rien ne se passe quand je presse le bouton. Il ne reconnaît pas la commande. Si j'ajoute un événement cela fonctionne. Comme ceci:
public static readonly DependencyProperty Button1CommandProperty =
DependencyProperty.Register("Button1Command", typeof(ICommand), typeof(BptCellTemplate), new FrameworkPropertyMetadata(null, OnButton1CommandChanged));
private static void OnButton1CommandChanged(DependencyObject dependencyObject,
DependencyPropertyChangedEventArgs args)
{
var bptCellTemplate = dependencyObject as BptCellTemplate;
if (bptCellTemplate == null || !(args.NewValue is ICommand))
{
return;
}
(bptCellTemplate.DataContext as BptCellTemplateViewModel).Button1Command = (ICommand)args.NewValue;
}
Y at-il un moyen de lier sans événement? car il fonctionne avec d'autres propriétés du bouton que je ne la même manière (Visibility
par exemple)
Où avez-vous défini la valeur de Button1Command? – jure