在 CalendarView 中显示会议 - Windows 10 UWP
Display meeting in CalendarView - Windows 10 UWP
我是 Windows 10 UWP-Apps 的新手,我尝试创建一个日历应用程序。
在我的页面上,用户可以创建会议。这里我有两个标题和位置的文本框和一个日期选择器。
使用 (speichern-)safe-button 您可以保存会议。
现在我的问题是,是否有可能在 CalendarView 中看到会议?我试图弄清楚,CalendarView 中的一天如何通过创建会议获得 point-symbol。如果用户点击这一天,他可以看到 meeting-information.
private void btnSpeichern_Click(object sender, RoutedEventArgs e)
{
TerminAnlegen();
showDialog("Termin wurde hinzugefügt.");
}
public async void TerminAnlegen()
{
StorageFolder Ordner = ApplicationData.Current.LocalFolder;
StorageFile Datendatei = await Ordner.CreateFileAsync("kalender.txt", CreationCollisionOption.ReplaceExisting);
string Daten = tbTitel.Text + ", " + tbOrt.Text + ", " + datePicker.Date;
if(Daten != "")
{
await FileIO.WriteTextAsync(Datendatei, Daten);
}
}
感谢您的帮助!
莎拉
我有 written a blogpost 这可能有助于理解 CalendarView
如何生成单独的天数。
在您的情况下,您需要订阅 CalendarViewDayItemChanging
事件并等待它在您要查找的日期执行。 CalendarViewDayItemChangingEventArgs
包含类型 CalendarViewDayItem
的 Item
属性,它又包含一个 Date
property,您可以检查它。
一旦有了要调整的 CalendarViewDayItem
,就可以访问它的可视化树(可以使用 VisualTreeHelper
方法)并在其中添加自己的 child。您还可以设置自定义 ControlTemplate
以在“日期”之上呈现自定义内容。
注意 - 如果您需要在呈现 CalendarView
日期之后添加自定义,您也可以通过在 CalendarView
中搜索 CalendarViewDayItem
类型来实现视觉树。
您可能会发现 Windows 社区工具包中的 Visual Tree Extensions 很有用:-)。
完整示例
XAML:
<StackPanel>
<DatePicker x:Name="Picker" />
<Button Click="Button_Click">Add</Button>
<CalendarView CalendarViewDayItemChanging="Calendar_CalendarViewDayItemChanging" x:Name="Calendar" />
</StackPanel>
C#:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private List<DateTimeOffset> _highlightedDates = new List<DateTimeOffset>();
private void Button_Click(object sender, RoutedEventArgs e)
{
_highlightedDates.Add(Picker.Date.Date);
UpdateCalendar();
}
private void UpdateCalendar()
{
var displayedDays = Calendar.FindDescendants<CalendarViewDayItem>();
foreach (var displayedDay in displayedDays)
{
if (_highlightedDates.Contains(displayedDay.Date.Date))
{
//highlight
displayedDay.Background = new SolidColorBrush(Colors.Red);
}
}
}
private void Calendar_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
if (_highlightedDates.Contains(args.Item.Date))
{
//highlight
args.Item.Background = new SolidColorBrush(Colors.Red);
}
}
}
我是 Windows 10 UWP-Apps 的新手,我尝试创建一个日历应用程序。 在我的页面上,用户可以创建会议。这里我有两个标题和位置的文本框和一个日期选择器。 使用 (speichern-)safe-button 您可以保存会议。
现在我的问题是,是否有可能在 CalendarView 中看到会议?我试图弄清楚,CalendarView 中的一天如何通过创建会议获得 point-symbol。如果用户点击这一天,他可以看到 meeting-information.
private void btnSpeichern_Click(object sender, RoutedEventArgs e)
{
TerminAnlegen();
showDialog("Termin wurde hinzugefügt.");
}
public async void TerminAnlegen()
{
StorageFolder Ordner = ApplicationData.Current.LocalFolder;
StorageFile Datendatei = await Ordner.CreateFileAsync("kalender.txt", CreationCollisionOption.ReplaceExisting);
string Daten = tbTitel.Text + ", " + tbOrt.Text + ", " + datePicker.Date;
if(Daten != "")
{
await FileIO.WriteTextAsync(Datendatei, Daten);
}
}
感谢您的帮助! 莎拉
我有 written a blogpost 这可能有助于理解 CalendarView
如何生成单独的天数。
在您的情况下,您需要订阅 CalendarViewDayItemChanging
事件并等待它在您要查找的日期执行。 CalendarViewDayItemChangingEventArgs
包含类型 CalendarViewDayItem
的 Item
属性,它又包含一个 Date
property,您可以检查它。
一旦有了要调整的 CalendarViewDayItem
,就可以访问它的可视化树(可以使用 VisualTreeHelper
方法)并在其中添加自己的 child。您还可以设置自定义 ControlTemplate
以在“日期”之上呈现自定义内容。
注意 - 如果您需要在呈现 CalendarView
日期之后添加自定义,您也可以通过在 CalendarView
中搜索 CalendarViewDayItem
类型来实现视觉树。
您可能会发现 Windows 社区工具包中的 Visual Tree Extensions 很有用:-)。
完整示例
XAML:
<StackPanel>
<DatePicker x:Name="Picker" />
<Button Click="Button_Click">Add</Button>
<CalendarView CalendarViewDayItemChanging="Calendar_CalendarViewDayItemChanging" x:Name="Calendar" />
</StackPanel>
C#:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private List<DateTimeOffset> _highlightedDates = new List<DateTimeOffset>();
private void Button_Click(object sender, RoutedEventArgs e)
{
_highlightedDates.Add(Picker.Date.Date);
UpdateCalendar();
}
private void UpdateCalendar()
{
var displayedDays = Calendar.FindDescendants<CalendarViewDayItem>();
foreach (var displayedDay in displayedDays)
{
if (_highlightedDates.Contains(displayedDay.Date.Date))
{
//highlight
displayedDay.Background = new SolidColorBrush(Colors.Red);
}
}
}
private void Calendar_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
if (_highlightedDates.Contains(args.Item.Date))
{
//highlight
args.Item.Background = new SolidColorBrush(Colors.Red);
}
}
}