我的 XMAL 文件中多次出现以下 XAML 片段。 是否可以将 ComboBox 和 ComboBoxItems 组合成一个静态或动态资源以节省空间并简化维护问题?
<Button>
<Canvas HorizontalAlignment="Left" VerticalAlignment="Top">
<ComboBox Width="34" FontSize="13" Margin="0" Padding="2,0,0,0">
<ComboBoxItem Content="01"></ComboBoxItem>
<ComboBoxItem Content="02"></ComboBoxItem>
<ComboBoxItem Content="03"></ComboBoxItem>
<ComboBoxItem Content="04"></ComboBoxItem>
<ComboBoxItem Content="05"></ComboBoxItem>
<ComboBoxItem Content="06"></ComboBoxItem>
<ComboBoxItem Content="08"></ComboBoxItem>
....... ALL THE WAY TO 100 Items......
<ComboBoxItem Content="100"></ComboBoxItem>
</ComboBox>
</Canvas>
</Button>
最佳答案
不需要声明那么多comboboxItem的实例。只需声明资源以将 ItemsSource 提供给您的组合框(您可以使用 ObjectDataProvider)
在 UserControl、Window 或 App 资源(任何您喜欢的地方)中声明此资源:
<ObjectDataProvider x:Key="EnumerableRange"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:linq="clr-namespace:System.Linq;assembly=System.Core"
ObjectType="{x:Type linq:Enumerable}" MethodName="Range">
<ObjectDataProvider.MethodParameters>
<sys:Int32>1</sys:Int32>
<sys:Int32>100</sys:Int32>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
您可以通过像这样设置 ItemsSource 将其用于多个组合框:
<ComboBox ItemsSource="{Binding Source={StaticResource EnumerableRange}}"/>
关于c# - 在我的 XAML 中,我可以将一个 ComboBox 和多个 ComboBoxItems 制作成一个静态或动态资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315651/