我试图像Windows手机那样创建一个类似的重音色选系统,其中所有可用的颜色都以正方形网格显示。
Mahapps.Metro有一个名为Accent的对象,它有一个名称(字符串)和一个附加到它的资源字典。所以在我的列表框中,我试图绑定到这些项目。
这是我的XAML的样子
<ListBox x:Name="accentChooserBox" ItemsSource="{Binding}" PreviewMouseDoubleClick="accentChooserBox_PreviewMouseDoubleClick" SelectionMode="Single">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="{Binding Path=???}" Height="50" Width="50">
<TextBlock Text="{Binding Path=Name}" FontWeight="Light" VerticalAlignment="Bottom"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我想将Grid的背景设置为Accent的AccentColor。 这里也是Resourcedictionary如何看起来像
的一个例子<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Color x:Key="HighlightColor">#FF5133AB</Color>
<Color x:Key="AccentColor">#CC6459DF</Color> <--- I want to bind to this
<!--60%-->
<Color x:Key="AccentColor2">#996459DF</Color>
<!--40%-->
<Color x:Key="AccentColor3">#666459DF</Color>
<!--20%-->
<Color x:Key="AccentColor4">#336459DF</Color>
<!-- re-set brushes too -->
<SolidColorBrush x:Key="HighlightBrush" Color="{StaticResource HighlightColor}" />
<SolidColorBrush x:Key="AccentColorBrush" Color="{StaticResource AccentColor}"/>
<SolidColorBrush x:Key="AccentColorBrush2" Color="{StaticResource AccentColor2}"/>
<SolidColorBrush x:Key="AccentColorBrush3" Color="{StaticResource AccentColor3}"/>
<SolidColorBrush x:Key="AccentColorBrush4" Color="{StaticResource AccentColor4}"/>
<SolidColorBrush x:Key="WindowTitleColorBrush" Color="{StaticResource AccentColor}" />
<SolidColorBrush x:Key="AccentSelectedColorBrush" Color="White" />
<LinearGradientBrush x:Key="ProgressBrush" EndPoint="0.001,0.5" StartPoint="1.002,0.5">
<GradientStop Color="{StaticResource HighlightColor}" Offset="0" />
<GradientStop Color="{StaticResource AccentColor3}" Offset="1" />
</LinearGradientBrush>
<SolidColorBrush x:Key="CheckmarkFill" Color="{StaticResource AccentColor}" />
<SolidColorBrush x:Key="RightArrowFill" Color="{StaticResource AccentColor}" />
<Color x:Key="IdealForegroundColor">White</Color>
<SolidColorBrush x:Key="IdealForegroundColorBrush" Color="{StaticResource IdealForegroundColor}"/>
我如何在Grid的背景属性中写这个?我尝试使用Background="{Binding Path=Resources.AccentColor}"
,但这不起作用。
答案 0 :(得分:1)
如果您将资源字典合并到资源中,则可以直接访问它:
<ListBox ...>
<ListBox.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Path/To/YourResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ListBox.Resources>
然后,只需使用它:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="{Binding Path=AccentColor}" Height="50" Width="50">