如何将 Window 中的图像设置为 XAML 中的标题 MashAPPs.Metro

How to set Image in Window Title in XAML with MashAPPs.Metro

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

代码:

<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}">

图片:

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

如何在 window 标题中设置图片而不是普通文本?

由于您使用的是 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 控件用于视觉画笔。

我用左Window命令图像和右Window菜单等命令实现了它。

代码:

<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>

图片