Laden...

[erledigt] Frage zu FindAncestor MarkupErweiterung

Erstellt von Pico1184 vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.388 Views
Pico1184 Themenstarter:in
223 Beiträge seit 2009
vor 13 Jahren
[erledigt] Frage zu FindAncestor MarkupErweiterung

Hallo,

ich habe ne Frage zur FindAncestor MarkupErweiterung, und zwar nutze ich von Infragistics das xamDataGrid in welchem ich ein ContextMenu habe. Wenn ich nun aus dem ContextMenu einen Delete Command sende, möchte ich den oder die selektierten Einträge aus dem DataGrid löschen, hatte gedacht das ich das DataGrid über CommandParameter an mein ViewModel übergeben kann. Etwa so:


<igDP:XamDataGrid HorizontalAlignment="Stretch" DataSource="{Binding Signals}" x:Name="SignalGrid" VerticalAlignment="Stretch" Theme="Aero" GroupByAreaLocation="None" IsGroupByAreaExpanded="True" IsNestedDataDisplayEnabled="False">
<igDP:XamDataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Löschen" Command="{Binding DeleteCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type igDP:XamDataGrid}}}">
....
</igDP:XamDataGrid>

Wieso bekomme ich als CommandParameter immer Null??? Was mache ich hier falsch?
Oder wie greift man sonst vom ViewModel auf ein Objekt der View zu, kann man das so über CommandParameter machen????

Danke für eure Hilfe!

Grüße Pico

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Pico1184,

warum bindest du nicht direkt über ElementName an das DataGrid?

zero_x

Pico1184 Themenstarter:in
223 Beiträge seit 2009
vor 13 Jahren

warum bindest du nicht direkt über ElementName an das DataGrid?

Das hab ich auch schon probiert.....übergibt mir aber auch immer NULL???!!!
Versteh das beim besten Willen nicht! Habs jetzt auch nochmal probiert:


<igDP:XamDataGrid HorizontalAlignment="Stretch" DataSource="{Binding Signals}" Name="SignalGrid" VerticalAlignment="Stretch" Theme="Aero" GroupByAreaLocation="None" IsGroupByAreaExpanded="True" IsNestedDataDisplayEnabled="False">
...
<igDP:XamDataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Löschen" Command="{Binding DeleteCommand}" CommandParameter="{Binding ElementName=SignalGrid}">
<MenuItem.Icon>
<Image Source="Images\NodeRefresh24.png"/>
</MenuItem.Icon>
</MenuItem>
...
</ContextMenu>
</igDP:XamDataGrid.ContextMenu>
</igDP:XamDataGrid

Es will einfach nicht! Vielleicht hat jemand von euch noch ne Idee??

Grüße Pico

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

du kannst mit RelativSource rumsuchen wie du willst. Du wirst nie dein DataGrid finden weil die Items des ContextMenus sich nicht im selben Visuellen Tree befinden wie der Rest des Fensters. Dazu gibts massig Artikel im Internet, z.B. hier.

Baka wa shinanakya naoranai.

Mein XING Profil.

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Pico1184,

um tallas Beitrag zu ergänzen: Such mal nach DataContextSpy von Josh Smith. Die Klasse wird dir weiterhelfen können. Siehe auch Artificial Inheritance Contexts in WPF.

zero_x

Pico1184 Themenstarter:in
223 Beiträge seit 2009
vor 13 Jahren

Dankeschön an euch! Es hat funktioniert!

Aber ich verstehe es noch nicht ganz! Also das ConextMenu befindet sich erst auf dem VisualTree
wenn es geöffnet wurde und deshalb kann ich das DataGrid nicht finden????????

Also setzt man das Grid als PlacementTarget des ContextMenus und kann darüber dann auf das Grid zugreifen????

Hört sich irgendwie so an als ob ich das nicht verstanden hätte! Vielleicht kann mir jemand nochmal erklären, wär super wenn ich das verstehen würde!

Dankeschön!

Grüße Pico

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Pico1184,

in den letzen Beitrag von mir steht alles drin, was du wissen musst. Hast du dir den Artikel durchgelesen?

zero_x

Pico1184 Themenstarter:in
223 Beiträge seit 2009
vor 13 Jahren

Ne das war mir gestern Abend zuviel zu lesen....

Hatte es mit tallas Hinweis erledigt!

Werds mir jetzt aber mal durchlesen,
damit ich kapier was ich da überhauot genau gemacht habe!

Danke euch für eure Hilfe!

Grüße Pico