WPF 中如何定义一个按钮可以使用icon图标

sunnyxe 2017-10-31 08:56:20


类似于这种的,左边是图标右边是文字
并且需要可以在后台动态生成按钮时设置图标
button = new IconButton()
button.ImageSource =@"d:1.ico";
panel.Children.Add(button);
...全文
1578 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你可以把任何东西放到 Button 的 Content 内部,例如放入一个日历控件、或者你自定义的用户控件实例,等等。
sunnyxe 2018-04-07
  • 打赏
  • 举报
回复
引用 4 楼 qq_28194303 的回复:
重写Button的模板吧 像这样

<Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                    <Grid Name="gdMain">
                        <Grid.Effect>
                            <DropShadowEffect BlurRadius="0" Color="#FF858484" Direction="0" ShadowDepth="0"/>
                        </Grid.Effect>
                        <Grid.Background>
                            <LinearGradientBrush Opacity="0.4" StartPoint="0,0" EndPoint="0,1.5">
                                <GradientStop Offset="0" Color="#def1ff"/>
                                <GradientStop Offset="0.4" Color="#9cd4ff"/>
                                <GradientStop Color="#ffffff" Offset="1"/>
                            </LinearGradientBrush>
                        </Grid.Background>
                        <Border x:Name="borMain" BorderBrush="LightGray" Opacity="1" BorderThickness="0.5" CornerRadius="0">
                            <DockPanel>
                                <Image x:Name="imgMain" Opacity="1" Source="{Binding ElementName=uButton, Path=ButtonIcon}" Width="{Binding ElementName=uButton, Path=Height}" Margin="5,2,0,2" HorizontalAlignment="Left"/>
                                <TextBlock x:Name="txtMain" Opacity="1" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"
                                           FontSize="18"/>
                            </DockPanel>
                        </Border>
                    </Grid>                    
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
再在后台做一个属性binding
不明白怎么用啊,能给个例子吗
晨易夕 2017-11-01
  • 打赏
  • 举报
回复
重写Button的模板吧 像这样

<Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                    <Grid Name="gdMain">
                        <Grid.Effect>
                            <DropShadowEffect BlurRadius="0" Color="#FF858484" Direction="0" ShadowDepth="0"/>
                        </Grid.Effect>
                        <Grid.Background>
                            <LinearGradientBrush Opacity="0.4" StartPoint="0,0" EndPoint="0,1.5">
                                <GradientStop Offset="0" Color="#def1ff"/>
                                <GradientStop Offset="0.4" Color="#9cd4ff"/>
                                <GradientStop Color="#ffffff" Offset="1"/>
                            </LinearGradientBrush>
                        </Grid.Background>
                        <Border x:Name="borMain" BorderBrush="LightGray" Opacity="1" BorderThickness="0.5" CornerRadius="0">
                            <DockPanel>
                                <Image x:Name="imgMain" Opacity="1" Source="{Binding ElementName=uButton, Path=ButtonIcon}" Width="{Binding ElementName=uButton, Path=Height}" Margin="5,2,0,2" HorizontalAlignment="Left"/>
                                <TextBlock x:Name="txtMain" Opacity="1" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"
                                           FontSize="18"/>
                            </DockPanel>
                        </Border>
                    </Grid>                    
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
再在后台做一个属性binding
roger900909 2017-11-01
  • 打赏
  • 举报
回复
重写Button
shoppo0505 2017-11-01
  • 打赏
  • 举报
回复
这个文字连图标应该都是一个图片文件吧? 没见过文字能显示在图片旁边的

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧