2016-06-10 5 views
0

У меня есть привязка данных, которая зависит от окна, в котором оно определено.Как я могу привязать к окну, в котором находится привязка?

Попытка создать связывание как таким образом:

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

заканчивается ошибкой.

Я хочу, чтобы привязка была разрешена самому окну ... как я могу это сделать?

Это было отмечено как дубликат нескольких вопросов, однако описанный здесь метод - это метод, который я пытаюсь здесь, и он не работает.

творю использование MultiConverter, что я написал, который ожидает два привязок - один в булево, и один к окну:

<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> 

Это суть преобразователей Преобразование функции:

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() - просто простой метод расширения, который возвращает экран, на котором находится окно.

Debugging показывает, что попытки решить values[1] as Window результаты в null ...

+1

Возможный дубликат [Как использовать WPF привязок с RelativeSource?] (Http://stackoverflow.com/questions/84278/ how-do-i-use-wpf-bindings-with-rootsource) – ASh

+0

Возможный дубликат [WPF Bind to itself] (http://stackoverflow.com/questions/1906587/wpf-bind-to-itself) – Fruchtzwerg

ответ

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

И как будет ли это выглядеть в MultiBinding? – Will

+0

'<Связывание RelativeSource =" {RelativeSource AncestorType = Window} "/>' – Funk

+0

Это сделало трюк. Так просто; человек, я чувствую себя глупым. Благодарю. – Will

Смежные вопросы