1 前端绑定
1.1.绑定DataContext中的值
<MultiBinding Converter="{StaticResource contentConverter}">
<Binding Path="CurrentUserInfo" />
<Binding Path="CurrentUserInfo.UserName" />
<Binding Path="CurrentUserInfo.Age" />
</MultiBinding>
1.2.根据ElementName查找对象进行绑定
<MultiBinding Converter="{StaticResource contentConverter}">
<Binding ElementName="NavigationTree" Path="SelectedItem" />
<Binding Path="CurrentUserInfo.UserName" />
</MultiBinding>
2 后端接收
自定义的converter类需要继承IMultiValueConverter,并实现Convert(object[] values, Type targetType, object parameter, CultureInfo culture)和ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)方法。参数中的values为绑定对象的集合,元素顺序按前端绑定时的顺序。
internal class ContentConverter : IMultiValueConverter
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values is null)
{
return null;
}
else
{
_userName = values[1].ToString();
if ((values[0] as TreeViewItem).Tag == null)
{
return null;
// return new ContactUsPage();
}
else
{
return GetPage(values[0] as TreeViewItem);
//return GetPageNotAddToPool(value as TreeViewItem);
}
}
}
public object[] ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}