Xaml 파일의 MahApps.Metro와 함께 StaticResources와 함께 제공되는 ModernUIIcons를 사용하고 있습니다. 내 UI에 1 점을 추가하는 듯하는 것은 다음과 같이 매우 간단합니다 :WPF StaticResource로 사각형을 캡슐화하여 WPF의 CustomControl에 채우기
<Rectangle Width="19"
Height="19">
<Rectangle.Fill>
<VisualBrush Visual="{StaticResource appbar_database}" />
</Rectangle.Fill>
</Rectangle>
나는 그래서 다음과 같이 할 수있는 CustomControl에 사각형의 모든 로직을 캡슐화 할 :
<cc:MenuItemIcon Source="{StaticResource appbar_page}"/>
을/도서관, 테마 등
하나에서 프로젝트 generic.xaml을 : 이것은 내가 지금까지 가지고 무엇
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:AMIGEDM.CustomControls.Menu">
<Style TargetType="{x:Type local:MenuItemIcon}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MenuItemIcon}">
<Rectangle Width="19"
Height="19">
<Rectangle.Fill>
<VisualBrush Visual="{TemplateBinding Source}" />
</Rectangle.Fill>
</Rectangle>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
01 23,516,
그리고 CS 파일에
namespace AMIGEDM.CustomControls.Menu
{
public class MenuItemIcon : Control
{
static MenuItemIcon()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MenuItemIcon), new FrameworkPropertyMetadata(typeof(MenuItemIcon)));
}
public static readonly DependencyProperty SourceProperty =
DependencyProperty.Register("Source", typeof(Visual), typeof(MenuItemIcon));
public Visual Source
{
get { return (Visual)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}
}
}
모든 부드러운 실크 컴파일, 그래서
<Window x:Class="AMIGEDM.TestDummy.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:cc="clr-namespace:AMIGEDM.CustomControls.Menu;assembly=AMIGEDM.CustomControls">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/AMIGEDM.TestDummy;component/Resources/Icons.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AMIGEDM.CustomControls;component/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Menu IsMainMenu="True" SnapsToDevicePixels="True">
<MenuItem Header="_Open">
<MenuItem Header="_File">
<MenuItem.Icon>
<cc:MenuItemIcon Source="{StaticResource appbar_page}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_File">
<MenuItem.Icon>
<Rectangle Width="19"
Height="19">
<Rectangle.Fill>
<VisualBrush Visual="{StaticResource appbar_database}" />
</Rectangle.Fill>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
</Grid>
도서관은 사각형을 사용하여 아이콘을두고
, 사각형 채우기 내 TestDummy 프로젝트로 이동 VisualBrush,하지만 CustomControl을 사용하려고하면 아무 것도 표시되지 않습니다.
을 나는 여기 VS가 없습니다 그것을 확인하지만, 이것을 시도하십시오 : – Eyjafjallajokull
@Eyjafjallajokull 감사하지만 아이콘 크기를 조정해야합니다. XAML에서 올바르게 이해하면 – Claudiordgz
소스 = "{StaticResource appbar_page}는 사각형이며 Visual ="{StaticResource appbar_database} "아이콘이됩니다.즉, 직사각형에 키를 지정하고 사용자 정의 컨트롤을 사용하는 대신 메뉴 항목의 아이콘으로 설정하는 것입니다. 올바른 방법으로 표시되었지만 리소스를 사용하는 두 번째 메뉴에서도 마찬가지입니다. – Eyjafjallajokull