如何使用绑定在组合框中显示默认值?

时间:2013-07-31 17:13:19

标签: wpf xaml data-binding mvvm

我在课后面有以下代码,

我在xaml中有一个cobobox。我想用这个类绑定它。 下面的代码使组合框包含2个项目“任意”和“可配置”

但是当我运行应用程序时,组合框是空的。 未选择默认值。 怎么做到这个?

public class ReadData:INotifyPropertyChanged
{

    private string typeData="Arbitrary";
    private string[] typeDataList={"Arbitrary", "Configurable"};
    private ICollectionView typeDataList;

    public string[] TypeDataList
    {
        get
        {
            return typeDataList;
        }
        set
        {
            typeDataList=value;
            NotifyProertyChanged("TypeDataList");
        }
    }

public string TypeData
{
get
{
return typeData;
}
set
{
typeData=value;
NotifyPropertyChanged("TypeData");
}

public ICollectionView TypeDataListView
{
get
{
typeDataListView=CollectionViewSource.GetDefaultView(typeDataList);
return typeDataListView;
}
set
{
typeDataListView=value;
//typeDataList= ???
}
}

XAML文件

<ComboBox ItemSource={Binding TypeDataListView}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding typeData}" Height="23" Width="120"/>

1 个答案:

答案 0 :(得分:1)

我想你不想只绑定项目源,但选择组合框对你也很重要,所以你也想在视图模型上添加选择。有两种方法:

  1. 在ReadData类上添加SelectedTypeData属性,其类型为string。将ComboBox的SelectedItem绑定到SelectedTypeData。然后在ReadData对象的初始化中,您可以将SelectedTypeData的默认值指定为ComboBox上的默认值。

  2. 在ReadData类上添加TypeDataListView属性,其类型为ICollectionView。它可能需要您的TypeDataList是一个List。它可以通过调用CollectionViewSource.GetDefaultView(...)生成。您可以将其CurrentItem属性指定为默认选择,并将Combobox的IsSynchronizedWithCurrentItem属性指定为true,这样您就可以将combobox的selecteditem与TypeDataListView的CurrentItem同步。

  3. 如果您不想在视图模型上添加选择,可以在代码后面添加一个Loaded事件,并在处理程序中手动分配组合框的选定项目。