У меня есть привязка данных, которая зависит от окна, в котором оно определено.Как я могу привязать к окну, в котором находится привязка?
Попытка создать связывание как таким образом:
<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
...
Возможный дубликат [Как использовать WPF привязок с RelativeSource?] (Http://stackoverflow.com/questions/84278/ how-do-i-use-wpf-bindings-with-rootsource) – ASh
Возможный дубликат [WPF Bind to itself] (http://stackoverflow.com/questions/1906587/wpf-bind-to-itself) – Fruchtzwerg