我的项目中定义了许多 XAML Brush
对象。有些比较详细。现在它们都位于(编辑)Brushes.xaml 中,在其自己的文件中定义为 ResourceDictionary,如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<LinearGradientBrush x:Key="FiveColorGradient" >
...with five gradient stops
</LinearGradientBrush>
<LinearGradientBrush x:Key="TwentyFourColorGradient" >
...with 24 gradient stops
</LinearGradientBrush>
<LinearGradientBrush x:Key="RedYellowGradient" >
...etc
</LinearGradientBrush>
</ResourceDictionary>
问题是,如何将这些项目加载到 ItemsList
控件中,例如 ComboBox
?
(EDIT) 我希望直接在 XAML 中利用绑定(bind)语法,这将更易于维护。但我还没有找到正确的语法。到目前为止,这是我尝试过的:
<UserControl.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Key="BrushesDictionary" Source="Brushes.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<ComboBox ItemsSource="{StaticResource BrushesDictionary}"/>
</Grid>
当然,这是回击错误,因为您不能将键分配给 ResourceDictionary
或其他东西。
(我尝试查找了几个想法,但没有一个得到任何没有完全埋没在内容聚合或多年尘埃中的文档的支持......)
您可以使用 x:Static 来创建绑定(bind):
<ComboBox.ItemsSource>
<Binding Path="Resources.Keys"
Source="{x:Static Application.Current}"/>
</ComboBox.ItemsSource>
我是一名优秀的程序员,十分优秀!