ComboBox.ItemTemplate无法正确显示选择

时间:2014-09-12 20:56:37

标签: c# xaml

在问题c# wpf - cannot set both DisplayMemberPath and ItemTemplate中,我已经读过您可以替换DisplayMemberPath以组合ComboBox中的多个数据项。

我使用ItemTemplate设置了我的Combobox,并且已成功填充。但是当我在ComboBox中选择一个项目时,我会显示Data.MaterialNumber而不是我选择的实际文本。

MaterialNumbers是一个ObservableCollection<>

有人可以告诉我为什么我的ComboBox在选择后没有正确显示项目吗?

// Binding from my ViewModel, which retrieves material numbers correctly.
ObservableCollection<MaterialNumber> MaterialNumbers = GetMaterialNumbers();

<ComboBox Grid.Row="0" Grid.Column="1" ItemsSource="{Binding MaterialNumbers}"
    SelectedItem="{Binding MaterialNumber}"
    Validation.Error="View_Validator" Validation.ErrorTemplate="{StaticResource ErrorTemplateBorder}"
    IsEnabled="{Binding IsEnabled}" IsEditable="True" IsReadOnly="True" Margin="0,10,0,0">
    <ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock>
            <TextBlock.Text>
            <MultiBinding StringFormat="{}{0}: {1}">
                <Binding Path="Program.Name" />
                <Binding Path="MaterialNumberString" />
                <Binding UpdateSourceTrigger="PropertyChanged" />
                <Binding NotifyOnValidationError="True" />
                <Binding ValidatesOnDataErrors="True" />
            </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

1 个答案:

答案 0 :(得分:4)

感谢这篇文章http://www.shujaat.net/2010/08/wpf-editable-combobox-with-datatemplate.html,我能够弄清楚为什么我的ComboBox在选择项目时无法正确显示。这是因为我的ComboBox设置为IsEditable =“True”。显然,当使用ComboBox.ItemTemplate并设置了MultiBinding时,ComboBox无法确定要显示的项目,因此它会显示该类。