簡體   English   中英

WPF 按鈕數據觸發器未正確設置內容

[英]WPF Button DataTrigger not setting Content correctly

我正在制作一個 class,繼承自Window ,它為 TitleBar 添加了一些額外的功能。

我嘗試使用此 XAML 作為最小化、恢復/最大化和關閉按鈕來重新創建 Windows 10 標題欄:

            <Button x:Name="CloseButton"
                    Click="CloseButton_Click"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Content="&#xE106;" FontFamily="Segoe MDL2 Assets" FontSize="10" Padding="15,10" Background="Transparent" BorderBrush="Transparent" Foreground="White"
                    DockPanel.Dock="Right">
                <Button.Style>
                    <Style TargetType="{x:Type Button}"/>
                </Button.Style>
            </Button>

            <Button x:Name="MaximizeButton"
                    Click="MaximizeButton_Click"
                    DockPanel.Dock="Right"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    FontFamily="Segoe MDL2 Assets" FontSize="10" Padding="15,10" Background="Transparent" BorderBrush="Transparent" Foreground="White">
                <Button.Style>
                    <Style TargetType="{x:Type Button}">
                        <Setter Property="Button.Content" Value="&#xE739;" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=WindowState}" Value="Maximized">
                                <Setter Property="Button.Content" Value="&#xE923;" />
                            </DataTrigger>
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MainWindow}}, Path=WindowState}" Value="Normal">
                                <Setter Property="Button.Content" Value="&#xE739;" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Button.Style>
            </Button>

            <Button x:Name="MinimizeButton"
                    Content="&#xE949;"
                    Click="MinimizeButton_Click"
                    DockPanel.Dock="Right"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    FontFamily="Segoe MDL2 Assets" FontSize="10" Padding="15,15,15,5" Background="Transparent" BorderBrush="Transparent" Foreground="White">
                <Button.Style>
                    <Style TargetType="{x:Type Button}"/>
                </Button.Style>
            </Button>

問題是,雖然我的最大化按鈕正確顯示是這樣的,但最初:

按鈕默認外觀

如果我點擊它,它會變成這樣:

點擊后的按鈕

哪個看起來像一種無效字符? 根據Segoe UI MDL2 圖標指南,它是一個有效字符。

如果我然后再次單擊它來恢復它,恢復工作正常,但圖標保持不變並且不會變回正確的圖像,這個:

恢復點擊后

我的StyleDataTrigger有問題嗎?

你會注意到我已經嘗試過AncestorType={x:Type Window}}AncestorType={x:Type local:MainWindow}}MainWindow是我的 class,但這些都沒有任何區別。

我意識到我在MaximizeButton_Click方法中設置了Button.Content ,但我已經忘記了。 刪除它,這一切都按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM