包含ComboBox和Items setter的wpf控件

时间:2015-06-06 20:56:44

标签: c# wpf combobox

使用WPF我可以这样做:

<Combobox>
    <ComboBox.Items>
        <system:Boolean>True</system:Boolean>
        <system:Boolean>False</system:Boolean>
    </ComboBox.Items>
</Combobox>

但我在创建自定义控件方面遇到问题,该控件将delegate项目添加到ComboBox

当我做这样的事情时:

<Combobox Items={Binding something}/>

我收到有关Items setter的编译错误(因为Items没有setter)。 我该怎么处理?我的意思是,从我的控件设置/重写项目到组合框?

2 个答案:

答案 0 :(得分:2)

要将XAML中的列表定义为绑定,请使用ResourceDictionary。这可以在一个单独的文件中,但下面我将它包含在Window.Resources:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary x:Key="boolArray">
            <sys:Boolean x:Key="true">True</sys:Boolean>
            <sys:Boolean x:Key="false">False</sys:Boolean>
        </ResourceDictionary>
    </ResourceDictionary>
</Window.Resources>

然后,您可以将XAML定义的数组应用于ComboBox的ItemsSource属性:

<ComboBox ItemsSource="{Binding Values, Source={StaticResource boolArray}}"/>

如果不清楚,sys命名空间的定义如下:

sys命名空间的定义如下:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

答案 1 :(得分:0)

试试这个

public class Test
{
    public string T { get; set; }
}

public MainWindow()
{
    InitializeComponent();

    this.DataContext = new List<Test>()
    {
        new Test(){T = "1"}
    };
}

<ComboBox  ItemsSource="{Binding T}"/>