XAML 有没有办法在winui3中自定义日期选择器弹出按钮?

iqih9akk  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(99)

我想将选择元素的颜色(表示当前日期选择的蓝色条)更改为#020066,并更改弹出按钮的字体系列。

我尝试使用github中提供的日期选择器弹出式演示器的主题资源,但它没有任何作用。
我以前没有真正使用过任何与UWP相关的东西,所以我不知道我是否错过了什么。或者该UI元素不可编辑?
编辑:
我发现了一种使用app.xaml文件更改日期选择器的字体和颜色的方法。
您可以像这样覆盖contentcontroltheme和datepickerhighlightfill属性:

<SolidColorBrush x:Key="DatePickerFlyoutPresenterHighlightFill" Color="#020066"/>
<FontFamily x:Key="ContentControlThemeFontFamily">/Assets/Fonts/Righteous Regular.ttf/#Righteous</FontFamily>

我希望这能帮上忙。

6xfqseft

6xfqseft1#

此弹出按钮是一个DatePickerFlyoutPresenter,从generic.xaml中,您可以了解到这是一个名为 HighlightRectGrid
要更改 HighlightRectBackground

public MainPage()
{
    this.InitializeComponent();
    this.DatePickerControl.LayoutUpdated += DatePickerControl_LayoutUpdated;
}

private void DatePickerControl_LayoutUpdated(object? sender, object e)
{
    if (VisualTreeHelper
        .GetOpenPopupsForXamlRoot(this.XamlRoot)
        .FirstOrDefault() is Popup popup &&
        popup.Child.FindDescendant<Grid>(x => x.Name is "HighlightRect") is Grid highlightRect &&
        popup.Child.FindDescendants().OfType<LoopingSelector>() is IEnumerable<LoopingSelector> loopingSelectors)
    {
        highlightRect.Background = new SolidColorBrush(Colors.LightGreen);

        foreach (LoopingSelector loopingSelector in loopingSelectors)
        {
            loopingSelector.FontSize = 20;
        }
    }
}

备注

FindDescendant来自CommunityToolkit.WinUI.Extensions NuGet包。

相关问题