[英]c# wpf - Binding to two ElementName
我想将RadCalendar中的SelectedDate绑定到不同RadScheduleView中的两个CurrentDate。 我怎样才能做到这一点?
<telerik:RadCalendar Name="radCalendar"
Canvas.Left="80" Canvas.Top="200"
Height="320" Width="400"
SelectedDate="{Binding CurrentDate, ElementName=radScheduleView, Mode=TwoWay}"
SelectionMode="Single" DisplayDate="{Binding DisplayDate, Mode=TwoWay}">
</telerik:RadCalendar>
我想要两个ElementName=radScheduleView
和ElementName=radScheduleView1
编辑
这是我需要绑定的代码
<telerik:RadCalendar Name="radCalendar"
Canvas.Left="80" Canvas.Top="200"
Height="320" Width="400"
SelectionMode="Single" DisplayDate="{Binding DisplayDate, Mode=TwoWay}" >
<telerik:RadCalendar.SelectedDate>
<MultiBinding Converter="MultiValueConverter" Mode="TwoWay">
<Binding ElementName="radScheduleView" Path="CurrentDate"/>
<Binding ElementName="radScheduleView1" Path="CurrentDate"/>
</MultiBinding>
</telerik:RadCalendar.SelectedDate>
<telerik:RadScheduleView Name="radScheduleView1"
Canvas.Left="60" Canvas.Top="130"
Height="420" Width="570"
AppointmentsSource="{Binding Appointments}"
SelectedAppointment="{Binding SelectedAppointment, Mode=TwoWay}"
ActiveViewDefinitionIndex="{Binding ActiveViewDefinitionIndex,Mode=TwoWay}"
CurrentDate="{Binding CurrentDate, Mode=TwoWay}">
<telerik:RadScheduleView.ViewDefinitions>
<telerik:DayViewDefinition MinorTickLength="10min" />
</telerik:RadScheduleView.ViewDefinitions>
</telerik:RadScheduleView>
<telerik:RadScheduleView Name="radScheduleView"
Canvas.Left="60" Canvas.Top="130"
Height="420" Width="570"
AppointmentsSource="{Binding Appointments}"
SelectedAppointment="{Binding SelectedAppointment, Mode=TwoWay}"
ActiveViewDefinitionIndex="{Binding ActiveViewDefinitionIndex,Mode=TwoWay}"
CurrentDate="{Binding CurrentDate, Mode=TwoWay}">
<telerik:RadScheduleView.ViewDefinitions>
<telerik:DayViewDefinition MinorTickLength="1h" />
</telerik:RadScheduleView.ViewDefinitions>
您可以使用MultiBinding
代替简单的Binding
并将其与IMultiValueConverter
实现一起使用,如下所示:
public class MultiValueConverterExtension : MarkupExtension, IMultiValueConverter {
public override object ProvideValue(IServiceProvider serviceProvider) {
return this;
}
object IMultiValueConverter.Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return values[1];
}
object[] IMultiValueConverter.ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) {
return new object[] { value, value };
}
}
在这种情况下,XAML将像这样:
<telerik:RadCalendar Name="radCalendar"
Canvas.Left="80" Canvas.Top="200"
Height="320" Width="400"
SelectionMode="Single" DisplayDate="{Binding DisplayDate, Mode=TwoWay}">
<telerik:RadCalendar.SelectedDate>
<MultiBinding Converter="{local:MultiValueConverter}" Mode="TwoWay">
<Binding ElementName="radScheduleView" Path="CurrentDate"/>
<Binding ElementName="radScheduleView1" Path="CurrentDate"/>
</MultiBinding>
</telerik:RadCalendar.SelectedDate>
</telerik:RadCalendar>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.