im试图动态创建SfSchedule。创建Sf Schedule很容易,但是现在我需要添加网格和文本框来重新创建它,就像在.xaml
中一样如何能够动态创建DataTemplate以及动态地添加网格和文本框?
我在.xaml中具有可以正常工作的代码,但是我想动态创建它。到目前为止,我所做的是使用SfSchedule WeekSchedule = new SfSchedule();。并为其属性分配值,但现在我需要动态创建SfSchedule.AppointmentTemplate和DataTemplate,这是我尝试使用DataTemplate的地方Data = new DataTemplate();但这不能让我添加任何网格,矩形或文本框。
<syncfusion:SfSchedule ScheduleType="Month" Name="schedule" >
<syncfusion:SfSchedule.AppointmentTemplate>
<DataTemplate>
<Grid>
<Rectangle Fill="White" Stroke="Black"
StrokeThickness="3"></Rectangle>
<StackPanel Orientation="Horizontal">
<Rectangle Fill="{Binding AppointmentBackground}"
Width="10" ></Rectangle>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="15"
Text="{Binding Subject}"
Foreground="{Binding AppointmentBackground}"
FontStyle="Normal"></TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
</syncfusion:SfSchedule.AppointmentTemplate>
</syncfusion:SfSchedule>
C#
SfSchedule WeekSchedule = new SfSchedule();
WeekSchedule.HeaderDateFormat = "dddd dd";
DataTemplate DataTemp = new DataTemplate();
Grid firstGrid = new Grid();
DataTemp.Add(firstGrid); //This is what actually dont work, the datatemplate doesnt allow add
Rectange r1 = new Rectange();
r1.Fill = new SolidColorBrush(Colors.White);
r1.Stroke = new SolidColorBrush(Colors.Black);
r1.StrokeThickness = 3;
DataTemp.Add(r1);
WeekSchedule.AppointmentTemplate = DataTemp;
CalendarGrid.Children.Add(WeekSchedule);
预期结果将是能够将Rectange和Grid添加到DataTemplate中,然后将其添加到apppointmenttemplate中,然后添加到计划中。
这基本上是一个用于测试的伪代码,我想知道是否有可能这样做吗?
谢谢
答案 0 :(得分:1)
使用下面的代码片段解决您的问题。在下面的代码中,我们使用了FrameworkElementFactory而不是FramWorkElement。
DataTemplate appointmentTemplate = new DataTemplate();
appointmentTemplate.DataType = typeof(ScheduleDaysAppointmentViewControl);
FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid));
grid.SetValue(Grid.BackgroundProperty, new SolidColorBrush(Colors.Red));
grid.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
FrameworkElementFactory rect = new FrameworkElementFactory(typeof(Rectangle));
rect.SetValue(Rectangle.FillProperty, new SolidColorBrush(Colors.White));
rect.SetValue(Rectangle.StrokeProperty, new SolidColorBrush(Colors.Black));
rect.SetValue(Rectangle.StrokeThicknessProperty, 3d);
grid.AppendChild(rect);
appointmentTemplate.VisualTree = grid;
schedule.AppointmentTemplate = appointmentTemplate;
并在下面的链接中找到相同的示例。
示例:http://www.syncfusion.com/downloads/support/directtrac/general/ze/SfSchedule_WPF983671020
关于, 麦格什S