2016-06-10 5 views
0

Ich habe eine Datenbindung, die auf dem Fenster beruht, in dem es definiert ist.Wie kann ich an das Fenster binden, in dem sich meine Bindung befindet?

versuchen, die Bindung wie somit zu schaffen:

<Binding Source="{RelativeSource Self}"/> 

führt zu einem Fehler.

Ich möchte die Bindung auf das Fenster selbst auflösen ... wie kann ich das erreichen?

Dies wurde als ein Duplikat von ein paar Fragen markiert, jedoch ist die Methode, die darin beschrieben ist, die Methode, die ich hier versuche, und es funktioniert nicht.

I Verwendung eines Multiumwandler mache, das ich geschrieben denen erwartet zwei Bindungen - einer auf einen boolean, und man zu einem Fenster:

<MultiBinding Converter="{c:MyMultiConverter}"> 
    <MultiBinding.ConverterParameter> 
     <sys:Int32>0</sys:Int32> 
    </MultiBinding.ConverterParameter> 
    <!--This binding works fine--> 
    <Binding Path="MyBooleanProperty" Source="{x:Static MyPropertySource}"/> 

    <!--This binding results in an error - 'Value cannot be null.'--> 
    <Binding Source="{RelativeSource Self}"/> 
</MultiBinding> 

Dies ist der Kern der Konverter konvertieren Funktion:

public object Convert(
    object[ ] values, Type targetType, 
    object parameter, CultureInfo culture) { 
    int 
     //Get the monitor number the window is currently on... 
     Monitor = Screen.AllScreens.ToList().IndexOf((values[1] as Window).Screen()), 
     //[0] : If true, multiply by 2; else by 1. Add Parameter. 
     Index = (Monitor * ((bool) values[0] ? 2 : 1)) + (int)parameter; 
    return MyProject.MyList[Index]; 
} 

Window.Screen() ist nur eine einfache Erweiterungsmethode, die den Bildschirm zurückgibt, auf dem sich das Fenster befindet.

Debuggen zeigt, dass values[1] as Window Ergebnisse in null ...

+1

Mögliche Duplikat zu lösen versuchen, [Wie verwende ich WPF Bindungen mit Relative?] (Http://stackoverflow.com/questions/84278/ how-do-i-use-wpf-bindings-with-relationsource) – ASh

+0

Mögliches Duplikat von [WPF Binden an sich] (http://stackoverflow.com/questions/1906587/wpf-bind-to-itself) – Fruchtzwerg

Antwort

1
{Binding RelativeSource={RelativeSource AncestorType=Window}} 
+0

Und wie würde das in einem MultiBinding aussehen? – Will

+0

'' – Funk

+0

Das hat den Trick gemacht. So einfach; Mann, ich fühle mich dumm. Vielen Dank. – Will

Verwandte Themen