2016-06-02 8 views
1

Ich habe ein Problem mit Datagrid SelectedValue und SelectedValuePath.Wpf Datagrid bindind ausgewählten Wert mit Wert Pfad

Die Datagrid-Definition ist die folgende:

<DataGrid x:Name="dataGridResources" 
    SelectionUnit="FullRow" AutoGenerateColumns="False" 
    SelectedValue="{Binding SelectedElement.Resource, Mode=TwoWay, 
    UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="Resource"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Tags" Binding="{Binding TagLine}"></DataGridTextColumn> 
     <DataGridTextColumn Header="Resource" Binding="{Binding Resource}"></DataGridTextColumn> 
    </DataGrid.Columns> 

Die Datagrid Itemssource auf eine Eigenschaft des Viewmodel (ElementsCVS.View), definiert als Collection aus anderen Gründen bindinded ist, dann ist sowieso hier der Code:

elements = new ObservableCollection<MElement>(); 
    Elements = new ReadOnlyObservableCollection<Element>(elements); 
    ElementsCVS = new CollectionViewSource(); 
    ElementsCVS.Source = Elements; 
    ElementsCVS.View.Filter += ResourcesCVS_Filter; 

Ein Element Klasse ist die Basis Implementierung dieser Schnittstelle:

public interface IElement 
    { 
     string Name { get; set; } 
     CustomType Owner { get; set; } 
     int Order { get; set; } 
     OtherCustomType Type { get; set; } 
     string Resource { get; set; } 
     string TagLine { get; } 
    } 

Die tatsächlichen Elemente in der Sammlung können alle untergeordneten Typen sein. Das Verhalten, das ich erreichen möchte, ist, dass, wenn wir die Auswahl in Datagrid ändern, sein Ressourceneigenschaftswert der SelectedElement.Resource zugewiesen wird. Der wichtige Hinweis ist, dass SelectedElement nicht die aktuelle DataGrid-Auswahl ist, sondern an eine andere UI-Elementauswahl gebunden ist und wir alle anderen Eigenschaften unverändert lassen müssen.

Darüber hinaus das DataGrid zur Laufzeit überprüft wird seine selectedvalue -Eigenschaft entsprechend Auswahl auf Datagrid aktualisiert, aber ich konnte keine Möglichkeit finden, diese Änderung in der Ressource Eigenschaft des SelectedElement widerspiegeln.

Irgendeine Idee? Wo liege ich falsch?

Vielen Dank im Voraus.

EDIT

Als Beispiel:

Lassen Sie uns sagen, dass ich die folgende SelectedElement haben:

{ Name: Selected, Owner: SomeOwner, Order: 5, Type: 3, 
    Resource: "C:/Data/Res1.txt", TagLine: "Resource, C#, WPF" } 

Dann das folgende Element in Datagrid I ausgewählt:

{ Name: Resxyz, Owner: null, Order: -1, Type: 3, 
    Resource: "D:/Data/ResourceFile.txt", TagLine: "Resource, C++" } 

An dieser Stelle möchte ich die SelectedElement wie folgt aussehen:

{ Name: Selected, Owner: SomeOwner, Order: 5, Type: 3, 
    Resource: "D:/Data/ResourceFile.txt", TagLine: "Resource, C#, WPF" } 

die einzige Aktion sollte also sein:

SelectedElement.Resource = "D:/Data/ResourceFile.txt"; 
+0

Können Sie ein Beispiel oder etwas hinzufügen, was Sie wollen und wo Ihr Problem liegt? – SeeuD1

+0

@ SeeuD1 Ich bearbeitet wie Sie gebeten haben, lassen Sie mich wissen, wenn Sie etwas anderes brauchen, um mir zu helfen. Vielen Dank – Christopher

Antwort

0

ich es herausgefunden, und das war dumm, mein schlecht. Das OnPropertyChanged-Ereignis der SelectedElement-Eigenschaft wurde mit falschem Eigenschaftsnamen ausgelöst.