c# - 在我的 XAML 中,我可以将一个 ComboBox 和多个 ComboBoxItems 制作成一个静态或动态资源吗?

标签 c# wpf xaml combobox

我的 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/

相关文章:

c# - 文本框周围的部分边框

c# - 基于网格可见性的 WPF 动画

c# - 在C#中使用OpenCV进行框架化

c# - unity Texture2D 创建圆角

wpf - WPF 中的简单 CRUD 应用

c# - 在单个 ListView 中显示多个模型

wpf - .NET 3.5 和 .NET 4.5 之间的多重绑定(bind)发生了什么?

c# - DatagridTemplateColumn 中的动态

c# - 对 List<struct> 执行 LINQ 操作

c# - 如何在以下 LINQ to SQL 查询中编写 "Where"子句?