2017-03-02 2 views
-2

„TreeViewItem.Expanded“ Ereignis auf treeview Element, Code wie folgt:[WPF]; Expanded Veranstaltung Für TreeView in Caliburn.Micro

<TreeView ItemsSource="{Binding Nodes}" 
     [Event TreeViewItem.Expanded]=[Action Expanded($this)]; 
     [Event TreeViewItem.Collapsed]=[Action Collapsed($dataContext)]"> 
<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Nodes}"> 
     ... 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate></TreeView> 

es nicht funktioniert.

Hier ist mein Viewmodel

public class MyViewModel{ 
....... 
public void Expanded(Nodes node) 
{ 
.......... 
} 
} 

Dank,
Raghava

+0

Können Sie auf Ihre Anforderung eingehen? – Sivasubramanian

Antwort

0

Wenn Ihre Anforderung das IsExpanded Element in der Ansicht Modell bekommen, dann können Sie die TreeViewItem des IsExpanded auf eine Eigenschaft binden im Viewmodel.

<Style TargetType="{x:Type TreeViewItem}"> 
    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
</Style> 

Ansichtsmodell Code:

public class ViewModel 
{ 

    private bool isExpanded; 
    public bool IsExpanded 
    { 
     get 
     { 
      return isExpanded; 
     } 
     set 
     { 
      isExpanded = value; 
      MessageBox.Show("IsExpanded changed"); 
     } 
    } 
} 
+0

ich frage ** event ** Zum dynamischen Hinzufügen von Daten in caliburn.micro –

1

First off Sie sind in den ersten drei Zeilen der größte Teil der wichtigsten Code fehlt ...

Der Code, den Sie uns zeigte, ist hoffentlich ein Tippfehler, da es sicher ein XAML-Fehler wäre. Die beigefügte Eigenschaft Message.Attach ist erforderlich für C.M. um die Ereignisse zu sehen, die Sie erfassen möchten. Denken Sie daran, dass die Signaturen dieser Methoden genau sein müssen, sonst wird CM sie nicht in Ihrem Viewmodel finden.

<TreeView ItemsSource="{Binding Nodes}" 
     Message.Attach="[Event TreeViewItem.Expanded]=[Action Expanded($this)]; 
     [Event TreeViewItem.Collapsed]=[Action Collapsed($dataContext)]"> 
<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Nodes}"> 
     ... 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate></TreeView> 

Mein Vorschlag ist, diese Methoden auf die Ansicht des Code-Behind zuerst mit einem Doppelklick auf dieses Ereignis im Eigenschaftenfenster zu erstellen. Dann repliziere die Methode in deinem Viewmodel, du kannst bestimmte Dinge weglassen, aber damit es funktioniert, muss es so verkabelt werden, wie ich es angedeutet habe.

Morgan.