我的数据绑定依赖于定义它的窗口。
尝试像这样创建绑定:
<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( )
只是一个简单的扩展方法,它返回窗口所在的屏幕。
调试显示,尝试解析values[1] as Window
会导致null
...
答案 0 :(得分:1)
{Binding RelativeSource={RelativeSource AncestorType=Window}}