当前位置:编程学习 > C#/ASP.NET >>

WPF 按钮使用ControlTemplate后无法改变颜色


<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid>
            <Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>



<Button x:Name="Btn01" Template="{DynamicResource TemplateTriangle}" Width="155" Height="52" VerticalAlignment="Bottom" Margin="10,0,0,10" HorizontalAlignment="Left" Click="Button_Click_2"></Button>



private void Button_Click_2(object sender, RoutedEventArgs e)
{
    Btn01.Background = new SolidColorBrush(Colors.DarkRed);
}


我这样做了,但是按钮颜色改不了



<Button x:Name="Btn02" Content="Button" HorizontalAlignment="Left" Margin="210,142,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>



        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Btn02.Background = new SolidColorBrush(Colors.DarkRed);
        }


这样的却可以,我是漏掉什么了吗?求助...谢谢~ WPF 控件模板 --------------------编程问答-------------------- Btn02改变颜色了,但是会变回去,怎么破? --------------------编程问答-------------------- 样式有问题,修改下:

<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid Background={TemplateBinding Background}>
            <Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>
--------------------编程问答--------------------
引用 2 楼 wpfLove 的回复:
样式有问题,修改下:

<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid Background={TemplateBinding Background}>
            <Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>


你这样虽然可以改变颜色了,但是改变的不是特殊图形的颜色,而是整个背景色,它是矩形...而且无法修改控件的Content
--------------------编程问答--------------------
引用 3 楼 soulsteal 的回复:
Quote: 引用 2 楼 wpfLove 的回复:

样式有问题,修改下:

<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid Background={TemplateBinding Background}>
            <Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>


你这样虽然可以改变颜色了,但是改变的不是特殊图形的颜色,而是整个背景色,它是矩形...而且无法修改控件的Content

你的样式没有做这样的处理,自然是不可以了

<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid Background={TemplateBinding Background}>
            <Polygon Background={TemplateBinding Background} x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
            <ContentPresenter Content="{TemplateBinding Content}"></ContentPresenter>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>
--------------------编程问答--------------------
引用 4 楼 wpfLove 的回复:
Quote: 引用 3 楼 soulsteal 的回复:

Quote: 引用 2 楼 wpfLove 的回复:

样式有问题,修改下:

<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid Background={TemplateBinding Background}>
            <Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>


你这样虽然可以改变颜色了,但是改变的不是特殊图形的颜色,而是整个背景色,它是矩形...而且无法修改控件的Content

你的样式没有做这样的处理,自然是不可以了

<UserControl.Resources>
    <ControlTemplate x:Key="TemplateTriangle" TargetType="{x:Type Button}">
        <Grid Background={TemplateBinding Background}>
            <Polygon Background={TemplateBinding Background} x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
            <ContentPresenter Content="{TemplateBinding Content}"></ContentPresenter>
        </Grid>
    </ControlTemplate>
</UserControl.Resources>

 <Polygon Fill={TemplateBinding Background} x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 100,0 50,100" Stroke="Black" StrokeThickness="2" Margin="0">
            </Polygon>
通过Fill来控制背景 --------------------编程问答-------------------- 你有装blend吗?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,