WPF中的Mac Style DockBar功能

时间:2011-02-08 16:10:21

标签: wpf wpf-controls custom-controls

我想在Mac或ObjectBar上模仿DockBar。在此过程中,我希望学习WPF自定义控件,并希望为我和社区创建一个可用的控件。到目前为止我有这个

<Window x:Class="WPFMacStyleTBar.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="356" Width="577">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="3">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="1" x:Name="btnHome" Background="Transparent" BorderBrush="Transparent" Margin="0,0,47,0" Foreground="Transparent">
            <Button.Content>
                <Image Source="C:\Vikram\Projects\WPFMacStyleTBar\WPFMacStyleTBar\Images\Home.png"></Image>
            </Button.Content>
        </Button>
        <Button Grid.Column="2" x:Name="btnGlobe" Background="Transparent" BorderBrush="Transparent" Margin="0,0,47,0" Foreground="Transparent">
            <Button.Content>
                <Image Source="C:\Vikram\Projects\WPFMacStyleTBar\WPFMacStyleTBar\Images\Globe.png"></Image>
            </Button.Content>
        </Button>
        <Button Grid.Column="3" x:Name="btnNotes" Background="Transparent" BorderBrush="Transparent" Margin="0,0,49,0" Foreground="Transparent">
            <Button.Content>
                <Image Source="C:\Vikram\Projects\WPFMacStyleTBar\WPFMacStyleTBar\Images\Notes.png"></Image>
            </Button.Content>
        </Button>
    </Grid>        
</Grid>

这有点简陋,但我觉得对于初学者来说应该没问题。我面临的问题是,即使将背景和边框设置为“透明”,按钮边框仍会显示。在它的顶部,我想按钮区域裁剪为图像的区域。对于如何做到这一点,我将不胜感激。

修改

我找到了我要找的here

1 个答案:

答案 0 :(得分:0)

我认为一个包装面板(http://msdn.microsoft.com/en-us/library/system.windows.controls.wrappanel.aspx)将是一个更明智的选择,而不仅仅是限制用户能够使用的按钮设置。

此外,您还可以为按钮创建样式,并将按钮大小绑定到图像的大小(在代码隐藏中实现检查以设置最大图像大小)。

至于非透明的按钮边框,我真的不知道为什么会这样。如果可能,发布截图;)