Ich habe eine DataTemplate
, die in eine ResourceDictionary
setzen, und es gibt eine Schaltfläche in der DataTemplate
und ich legte diese DataTemplate
in einem Fenster. Jetzt möchte ich den Button-Befehl an eine Eigenschaft von windowViewModel
binden, wie kann ich das tun? Dies ist der Code:Wie bindet man eine Schaltfläche in einem DataTemplate an ein ViewModel?
<DataTemplate DataType="{x:Type types:User}" x:Key="UserTemp">
<Grid >
<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ????}, AncestorLevel=1}, Path=SelectLocationCommand}" />
</Grid>
</DataTemplate>
und in Window.xaml
<ContentControl x:Name="UserTemp" />
und in WindowViewModel:
public ICommand SelectLocationCommand
{
get {return new RelayCommand(selectLocationCommand); }
}
void selectLocationCommand()
{
_welcomeTitle = "AA";
}
dank alex, aber ich mag nicht SelectLocationCommand in der Benutzerklasse setzen !! tatsächlich benutzer die Entitätsklasse! –
Es gibt Lösungen, um den Befehl im übergeordneten ViewModel zu haben, wenn Sie nur ein paar mehr Details über Ihr Design geben könnten, könnte ich Ihnen besser helfen. Wenn Sie sagen, dass der Benutzer tatsächlich die Entity-Klasse ist, meinen Sie, dass das Model ist? – AlexDrenea
danke Alex, es hat eine wirklich einfache Lösung, Sie müssen nur einen Namen für das Fenster und in der dataTemplate bindig, Gibt den Elementnamen in diesem Namen. –