MVVM填充组合框

时间:2013-11-18 06:49:34

标签: c# data-binding mvvm combobox

我仍然是MVVM(和C#)的新手,所以如果我的问题不清楚,请告诉我,我会更新/澄清。

我的ListView中有一个xaml,代码如下:

<ListView.Resources>
    <local:IndexConverter x:Key="IndexConverter" />
    <DataTemplate x:Key="OrdinalColumnDataTemplate">
        <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem},
        Converter={StaticResource ResourceKey=IndexConverter}}" HorizontalAlignment="Right" />
    </DataTemplate>
</ListView.Resources>

<ListView.View>
    <GridView x:Name="gridView3">
        <GridViewColumn Header="#" CellTemplate="{StaticResource ResourceKey=OrdinalColumnDataTemplate}" />
        <GridViewColumn DisplayMemberBinding="{Binding Name, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}" Header="Name" />
        <GridViewColumn DisplayMemberBinding="{Binding License, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}" Header="License" />
    </GridView>
</ListView.View>

它按预期工作,它填充了每个元素的NameLicense属性。 现在,我想添加一个ComboBox,并使用Names中显示的相同元素的唯一ListView填充它。

问题1 :我测试了以下代码,但它不起作用,xml应该如何?

<ComboBox Name="filterUserComboBox" ItemsSource="{Binding Path=licenseListView, ElementName=Name}"></ComboBox>

问题2 :如果上述方法正常,如何将“全部”(或单个空元素)元素添加到ComboBox?

1 个答案:

答案 0 :(得分:0)

好的,我自己设法解决了这两个问题。希望它可能在将来帮助人们。

答案1:原来xml只是一点点关闭。

<ComboBox Name="filterUserComboBox" ItemsSource="{Binding Path=ResourceList}" DisplayMemberPath="Name"></ComboBox>

答案2:我研究了很长一段时间,解决方案是实际更改ComboBox中填充的MVVM,因此源实际上应该包含一个空的/ all选项以显示在ComboBox。