C# 无法使用UpdateLayout()[UWP]刷新日历视图
在我的UWP应用程序中,我试图刷新C# 无法使用UpdateLayout()[UWP]刷新日历视图,c#,xaml,uwp,uwp-xaml,calendarview,C#,Xaml,Uwp,Uwp Xaml,Calendarview,在我的UWP应用程序中,我试图刷新calendarview上的密度条,如果用户单击按钮,问题是,尽管calendarview.UpdateLayout()应重新运行CalendarViewDayItemChangeing事件,它仅在第一次加载CalendarView时运行。我做错什么了吗 public MainPage() { this.InitializeComponent(); densityColors.Add(Colors
calendarview
上的密度条,如果用户单击按钮,问题是,尽管calendarview.UpdateLayout()
应重新运行CalendarViewDayItemChangeing
事件,它仅在第一次加载CalendarView
时运行。我做错什么了吗
public MainPage()
{
this.InitializeComponent();
densityColors.Add(Colors.Green);
}
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
item = args.Item;
if (item < DateTimeOffset.Now)
{
item.SetDensityColors(densityColors);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
densityColors[0]=Colors.Blue;
calendarView.UpdateLayout();
}
public主页()
{
this.InitializeComponent();
密度颜色。添加(颜色。绿色);
}
private void CalendarView\u CalendarViewDayItemChangeing(CalendarView发件人、CalendarViewDayItemChangingEventArgs参数)
{
项目=参数项目;
如果(项
UpdateLayout
在这里不会执行任何操作,因为没有布局更新,并且只有当您移动到另一个日历视图时才会触发CalendarViewDayItemChangeing
public MainPage()
{
this.InitializeComponent();
densityColors.Add(Colors.Green);
}
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
item = args.Item;
if (item < DateTimeOffset.Now)
{
item.SetDensityColors(densityColors);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
densityColors[0]=Colors.Blue;
calendarView.UpdateLayout();
}
在您的情况下,只需手动定位所有CalendarViewDayItems
,并在现有视图上更新其颜色
public MainPage()
{
this.InitializeComponent();
densityColors.Add(Colors.Green);
}
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
item = args.Item;
if (item < DateTimeOffset.Now)
{
item.SetDensityColors(densityColors);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
densityColors[0]=Colors.Blue;
calendarView.UpdateLayout();
}
首先,创建一个小的Children
扩展方法来帮助检索相同类型的所有子项
public MainPage()
{
this.InitializeComponent();
densityColors.Add(Colors.Green);
}
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
item = args.Item;
if (item < DateTimeOffset.Now)
{
item.SetDensityColors(densityColors);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
densityColors[0]=Colors.Blue;
calendarView.UpdateLayout();
}
public static class Helper
{
public static List<FrameworkElement> Children(this DependencyObject parent)
{
var list = new List<FrameworkElement>();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is FrameworkElement)
{
list.Add(child as FrameworkElement);
}
list.AddRange(Children(child));
}
return list;
}
}
注意:您不必担心新的CalendarViewDayItem
进入视图,因为它们将由您的CalendarView\u CalendarViewDayItemChangeing
回调处理
public MainPage()
{
this.InitializeComponent();
densityColors.Add(Colors.Green);
}
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
item = args.Item;
if (item < DateTimeOffset.Now)
{
item.SetDensityColors(densityColors);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
densityColors[0]=Colors.Blue;
calendarView.UpdateLayout();
}