2016-05-13 2 views
0

ich bekomme ein seltsames Problem, wenn ich meine Combobox in meine ListView es sagt, es kann keine Referenz für meine Elementname Win (mein Fenstername) außerhalb finden von der listview es funktioniert gut und habe keine Probleme damit.System.Windows.Data Fehler: 4 nur passiert, wenn combobox in der Listenansicht ist

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=win'. BindingExpression:Path=SelectedParam; DataItem=null; target element is 'ComboBox' (Name='Krydsmålbox'); target property is 'SelectedValue' (type 'Object')

<ComboBox x:Name="Krydsmålbox" Foreground="#FFEAEAEA" Background="#FF303030" FontSize="12" Style="{StaticResource ComboBoxTest2}" ItemTemplate="{StaticResource cmbTemplate2}" ItemsSource="{Binding}" SelectedValuePath="Krydsmålene" 
        SelectedValue = "{Binding SelectedParam, ElementName=win, UpdateSourceTrigger=PropertyChanged}" Width="138" BorderBrush="#FF303030" Height="40"/> 

CS

Antwort

0

Statt durch die Elementnamen zu binden, ich glaube, es ist besser, ein Relative, so etwas zu verwenden:

<ComboBox x:Name="Krydsmålbox" Foreground="#FFEAEAEA" Background="#FF303030" FontSize="12" 
Style="{StaticResource ComboBoxTest2}" ItemTemplate="{StaticResource cmbTemplate2}" 
ItemsSource="{Binding}" SelectedValuePath="Krydsmålene" 
SelectedValue = "{Binding DataContext.SelectedParam, RelativeSource={RelativeSource FindAncestor, 
      AncestorType= Window},UpdateSourceTrigger=PropertyChanged}" 
Width="138" BorderBrush="#FF303030" Height="40"/> 
+0

replacent, die nicht > System.Windows.Data Fehler gearbeitet hat: 4: Kann nicht Quelle für die Bindung mit Bezug finden ‚Relative FindAncestor, AncestorType =‘ System.Windows .Window ', AncestorLevel =' 1 ''. BindingExpression: Pfad = SelectedParam; Datenelement = null; Zielelement ist 'ComboBox' (Name = 'Krydsmålbox'); target-Eigenschaft ist 'SelectedValue' (Typ 'Object') –

+0

Versuchen Sie 'AncestorType = {x: Type Window}} 'in' AncestorType = Window' zu ändern – Pikoh

+0

kein Unterschied, indem Sie das ändern –

0

Wenn Sie etwas nach innen setzen Eine ListView tritt in eine 'Insel der Verkapselung' ein, in die sie nicht außerhalb der Listenansicht gelangen und direkt an andere Elemente in yo binden kann Ihre Ansicht. Sie müssen das Element Bindung mit einem FindAncestor Bindung

{Binding Path=SelectedParam, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, 
UpdateSourceTrigger=PropertyChanged} 
+0

Jetzt bekomme ich das wieder System.Windows.Data Fehler: 4: Quelle für die Bindung mit Verweis 'RelativeSource FindAncestor nicht gefunden, AncestorType =' System.Windows.Window ', AncestorLevel =' 1 ''. BindingExpression: Pfad = SelectedParam; Datenelement = null; Zielelement ist 'ComboBox' (Name = 'Krydsmålbox'); target-Eigenschaft ist 'SelectedValue' (Typ 'Object') –

+0

ok, versuchen Sie die Bindung an etwas weiter unten im logischen Baum - ersetzen AncestorType = Fenster für AncestorType = Combobox. Ich gehe davon aus, dass Ihr Fenster und Combobox den gleichen DataContext –

+0

den gleichen Fehler jetzt nur mit FindAncestor, AncestorType = 'System.Windows.Controls.ComboBox –