[英]UWP/C# Applying selected Colour to NavigationView
最終設法使選色器下降並進行了排序,它們當前在OnNavigateTo的基礎上工作。
當我從顏色選擇器中選擇一種顏色時,我想立即應用到我的NavigationViewItems的前景中,或者單擊一次設置頁面中名為TextColourApply_Click的按鈕后,將其應用。
提到的顏色選擇器當前在settingspage上 ,NavigationViewItems在MainPage上 。
我正在查看UI刷新,但據我所知,這不適用於UWP。 作為一種變通方法,我正在考慮進行當前的框架導航,但這不起作用
我具有以下允許選擇的顏色導航回“ MainPage”時應用的功能:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
SolidColorBrush DefaultTextColour = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
if (ColourSelections.TextColour != null)
{
DefaultTextColour = ColourSelections.TextColour;
}
foreach (var item in NavView.MenuItems.OfType<NavigationViewItem>())
{
item.Foreground = DefaultTextColour;
}
}
任何關於如何暗示這一點的想法將不勝感激。 謝謝
如果您想要的行為如下:
當我從顏色選擇器中選擇一種顏色時,應立即將其應用於我的NavigationViewItems的前景,並且顏色選擇器位於設置頁面上。
在這種情況下你不需要的OnNavigatedTo您和的MainPage你不需要的應用一樣,所以刪除您的OnNavigatedTo方法也從設置頁面中刪除應用按鈕,然后只要做到以下幾點:
在ShellPage(NavigationView所在的頁面)內創建一個公共靜態屬性,該屬性將公開NavigationView,並確保在ShellPage的構造函數中對其進行初始化。
public static NavigationView MyNavView;
public ShellPage()
{
this.InitializeComponent();
MyNavView = NavView; //here you assign your navigation view to the public static property so you can access it outside this shell page as well.
}
現在,在顏色選擇器的colorChanged事件中(在您的設置頁面中),將顏色分配給NavigationmenuItems的前景。
private void TextColourPicker_ColorChanged(ColorPicker sender, ColorChangedEventArgs args)
{
SolidColorBrush DefaultTextColour = new SolidColorBrush(TextColourPicker.Color);
foreach (var item in ShellPage.MyNavView.MenuItems.OfType<NavigationViewItem>())
{
item.Foreground = DefaultTextColour;
}
}
並確保每次首次加載應用程序時,都會在資源中獲得默認顏色設置,請將Loaded事件分配給NavigationView並在其中設置默認顏色。
像這樣在xaml中添加已加載的事件:
<NavigationView x:Name="NavView" Loaded="NavView_Loaded">
而您后端的事件將是:
private void NavView_Loaded(object sender, object args)
{
SolidColorBrush DefaultTextColour = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
foreach (var item in NavView.MenuItems.OfType<NavigationViewItem>())
{
item.Foreground = DefaultTextColour;
}
}
請注意,現在您甚至不需要以前使用的公共靜態類來保存顏色,因此您也可以刪除該類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.