如何使用MashAPPs.Metro在XAML中设置窗口标题中的图像

时间:2016-03-07 08:31:36

标签: c# wpf xaml mahapps.metro

我有一个窗口,想要设置图片而不是标题文本,但它只显示图像命名空间的字符串。

代码:

<Controls:MetroWindow  x:Class="AdminControlCenter.View.MainView"
    ...
    Title="{Binding ImageViewModel.TitleBarImage}" Height="400" Width="600" 
    mc:Ignorable="d"
    d:DataContext="{d:DesignInstance vm:MainViewModel}" Icon="{Binding ImageViewModel.Icon}">

照片:

enter image description here

图标显示正确,图像保存为BitmapImage。

如何在窗口标题中设置图像而不是普通文本?

2 个答案:

答案 0 :(得分:1)

由于你正在使用MahApps控件,你需要这样做:

<Controls:MetroWindow.IconTemplate>
    <DataTemplate>
        <Grid Width="{TemplateBinding Width}"
              Height="{TemplateBinding Height}"
              Margin="8 8 0 8"
              Background="Transparent"
              RenderOptions.EdgeMode="Aliased"
              RenderOptions.BitmapScalingMode="HighQuality">
            <Rectangle Fill="White">
                <Rectangle.OpacityMask>
                    <VisualBrush Visual="{StaticResource appbar_resource_group}" Stretch="Uniform"/>
                </Rectangle.OpacityMask>
            </Rectangle>
        </Grid>
    </DataTemplate>
</Controls:MetroWindow.IconTemplate>

如果需要,可以使用Image控件作为可视画笔。

答案 1 :(得分:0)

我用图像的LeftWindow命令和菜单等的右窗口实现了它。

代码:

<Controls:MetroWindow.LeftWindowCommands>
 <Controls:WindowCommands>
   <Image Source="{Binding ImageViewModel.TitleBarImage}"/>
 </Controls:WindowCommands>
</Controls:MetroWindow.LeftWindowCommands>

<Controls:MetroWindow.RightWindowCommands>
    <Controls:WindowCommands>
        <VisualBrush Stretch="Fill"/>
        <StackPanel Name="menuHolder" Orientation="Horizontal">
            <Menu Name="MenuBar">
                <MenuItem Name="Options" Header="Options" >
                    <MenuItem Name="Settings" Header="Settings"/>
                    <MenuItem Name="Close" Header="Close"/>
                </MenuItem>
            </Menu>
        </StackPanel>
    </Controls:WindowCommands>
</Controls:MetroWindow.RightWindowCommands>

照片

enter image description here