【问题标题】:How to partial fill the rectangle within canvas in xaml如何在xaml中部分填充画布内的矩形
【发布时间】:2014-11-03 14:39:53
【问题描述】:

我有一些坐标位置,我必须在其上显示可点击按钮。所以在按钮里面我创建了矩形,一切都按预期工作,但现在我必须在有点像矩形底部边框的内部显示部分填充的矩形。 下面是代码:

<StackPanel>
                <Button Width="{Binding width}" Height="{Binding height}" 
                        ToolTipService.ToolTip="{Binding name}" Command="{Binding DataContext.EventTriggerCommand, ElementName=XYZCOORD}" CommandParameter="{Binding}">
                    <Button.Template>
                        <ControlTemplate>
                        <Rectangle Fill="{Binding Users_Auth_Info}" Opacity="0" Stretch="UniformToFill"/>
                        </ControlTemplate>
                    </Button.Template>
                    <Button.RenderTransform>
                        <TranslateTransform X="{Binding x}" Y="{Binding y}"/>
                    </Button.RenderTransform>
                </Button>
                <Border BorderBrush="Red" Height="{Binding Thickness_param}" BorderThickness="8">
                    <Border.RenderTransform>
                        <TranslateTransform X="{Binding x}" Y="{Binding y}"/>
                    </Border.RenderTransform>
                </Border>

现在我正在显示带边框的透明矩形,但边框不是我想要的。请告知。

【问题讨论】:

  • 您发布的 XAML 不是很有帮助。它绑定到示例中未声明的内容。并且您的标题说您要填充 Canvas 中的 Rectangle,但 XAML 显示的是 StackPanel 容器。最后,如果您不想要边框,那么为什么不直接从 XAML 中删除边框元素呢?
  • 它只是我用过的一个替代品,我正在显示一个透明的矩形并在其下方显示一个边框,但理想情况下,我需要的是填充到我们将从后端提供的百分比的矩形。
  • 您是说您已将按钮推到您想要的位置,但现在您希望在按钮内部 有一个彩色矩形?如果是这样,请完全删除 Button.Template,而只需添加一个矩形作为 Content,使用 Button.Content 或作为直接子项 (&lt;Button&gt;&lt;Rectangle/&gt;&lt;/Button&gt;)。此外,您可以通过将按钮的 BorderThickness 设置为 0 来移除边框。
  • 终于想通了。谢谢大家的帮助

标签: c#-4.0 windows-store-apps winrt-xaml


【解决方案1】:

使用按钮而不是边框​​,并且在该按钮内使用矩形。附上代码

 <StackPanel>
                <Button Width="{Binding width}" Height="{Binding height}" 
                        ToolTipService.ToolTip="{Binding name}" Command="{Binding DataContext.EventTriggerCommand, ElementName=XYZCOORD}" CommandParameter="{Binding}">
                    <Button.Template>
                        <ControlTemplate>
                        <Rectangle Fill="{Binding Users_Auth_Info_Color}" Opacity="0" Stretch="UniformToFill"/>
                        </ControlTemplate>
                    </Button.Template>
                    <Button.RenderTransform>
                        <TranslateTransform X="{Binding x}" Y="{Binding y}"/>
                    </Button.RenderTransform>
                </Button>

                <Button Width="{Binding width}" Height="{Binding Thickness_param}" 
                        ToolTipService.ToolTip="{Binding name}" Command="{Binding DataContext.EventTriggerCommand, ElementName=XYZCOORD}" CommandParameter="{Binding}">
                    <Button.Template>
                        <ControlTemplate>
                            <Rectangle Fill="{Binding Users_Auth_Info_Color}" Stretch="UniformToFill"/>
                        </ControlTemplate>
                    </Button.Template>
                    <Button.RenderTransform>
                        <TranslateTransform X="{Binding x}" Y="{Binding y}"/>
                    </Button.RenderTransform>
                </Button>
            </StackPanel>

【讨论】: