我自定义了一个功能区按钮,但只显示空白的白色窗口

Posted

技术标签:

【中文标题】我自定义了一个功能区按钮,但只显示空白的白色窗口【英文标题】:I customized a ribbonbutton, but only blank white window showing 【发布时间】:2015-12-22 09:26:17 【问题描述】:

我正在尝试自定义功能区按钮。

我画了两个椭圆,箭头指向下方。我已经把它放在 Windows 资源中,这样我就可以通过它的键名“RibbonButtonControlTemplateTest”引用它来在整个项目中使用这种样式。但是,当我执行下面的代码时,我看到的只是一个空白的白色窗口,为什么?

<Window x:Class="WpfApplication5.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"
    xmlns:local="clr-namespace:WpfApplication5"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">

<Window.Resources>
    <ControlTemplate x:Key="RibbonButtonControlTemplateTest" TargetType="x:Type RibbonButton">
        <Grid>
            <Ellipse>
                <Ellipse.Fill>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                        <GradientStop Offset="0" Color="Green"/>
                        <GradientStop Offset="0.5" Color="White"/>
                        <GradientStop Offset="1" Color="Green"/>
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <Ellipse Margin="10">
                <Ellipse.Fill>
                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                        <GradientStop Offset="0" Color="Transparent"/>
                        <GradientStop Offset="0.5" Color="White"/>
                        <GradientStop Offset="1" Color="Transparent"/>
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <ed:BlockArrow HorizontalAlignment="Stretch" Height="Auto" Margin="28.212,26.557,29.404,19.757" Orientation="Down" Width="Auto">
                <ed:BlockArrow.Fill>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                        <GradientStop Offset="0" Color="Green"/>
                        <GradientStop Offset="0.5" Color="White"/>
                        <GradientStop Offset="1" Color="Green"/>
                    </LinearGradientBrush>
                </ed:BlockArrow.Fill>
            </ed:BlockArrow>
        </Grid>
    </ControlTemplate>
</Window.Resources>

<Grid>
    <Grid x:Name="gridLeft" HorizontalAlignment="Left" Width="253.714">
        <RibbonButton x:Name="ribbonButton" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"
                      Content="StaticResource RibbonButtonControlTemplateTest">
        </RibbonButton>
    </Grid>
    <Grid x:Name="gridRight" HorizontalAlignment="Right" Width="253.714">
    </Grid>

</Grid>

【问题讨论】:

【参考方案1】:

您使用内容而不是模板。尝试更改此代码:

<RibbonButton x:Name="ribbonButton" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"
                      Content="StaticResource RibbonButtonControlTemplateTest">
        </RibbonButton>

收件人:

<RibbonButton x:Name="ribbonButton" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"
                      Template="StaticResource RibbonButtonControlTemplateTest">
        </RibbonButton>

【讨论】:

以上是关于我自定义了一个功能区按钮,但只显示空白的白色窗口的主要内容,如果未能解决你的问题,请参考以下文章

WPF/Silverlight问题:我自定义的按钮模板,怎么才能让里面的元素和整个按钮的大小同比例缩放

图片在按钮中显示为空白

wpf中我自定义了一个自定义控件,add到了界面,如何设置显示在最底层?后台代码如何控制?

请问一下我在Qt一应用程序中,在构造函数里面写的widget比如按钮这些,运行后都无法显示,只有一空白窗体

如何更改 UITableViewCell 编辑按钮背景颜色?

尽管设置了安全区域指南,但使用 XIB 显示的白色区域仍然显示空白区域