为什么我的自定义组合框没有显示所选值

时间:2012-03-16 10:37:04

标签: wpf mvvm custom-controls

任何人都可以帮助我。我已经创建了一个自定义组合框,它有一个itemtemplate,我绑定了所选项目,但我不能将它看作组合框中的选定项目。 这是代码:

xaml:

<Grid>
    <hcw:ClassificationSelectorThreeLayerComboBox Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="4" SelectedItem="{Binding Path=SelectedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding CarePlanCatalogs.AllLinkedClassifications}" Margin="3,3,20,3"/>
</Grid>

viewmodel:

class NeedViewModel : CarePlanEntityViewModelBase
{
    public LinkedClassification SelectedValue
    {
        get { return selectedValue; }
        set 
        {
            if (value != null)
            {
                selectedValue = value;
                OnPropertyChanged("SelectedValue");
            }
        }
    }
}


<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<DataTemplate x:Key="ClassificationSelectorThreeLayerDataTemplate">
    <Border BorderBrush="#ACACAC" BorderThickness="0,0,0,1">
        <StackPanel>
            <Label Content="{Binding Path=ClassificationComponent.ComponentName}" Margin="0,0,0,4" />
            <Label Content="{Binding Path=MainClass.MainClassName}" Margin="0,0,0,4"  />
            <Label Content="{Binding Path=SubClass.SubClassName}" Margin="0,0,0,4"  />
        </StackPanel>
    </Border>

</DataTemplate>

2 个答案:

答案 0 :(得分:1)

它是否适用于常规组合框?

您是否将SelectedValue设置为CarePlanCatalogs.AllLinkedClassifications中的LinkedClassification实例之一或创建另一个实例?如果您创建另一个实例,则应该在LinkedClassification上覆盖Equals和GetHashCode,因此wpf可以在CarePlanCatalogs.AllLinkedClassifications中找到您的LinkedClassification

答案 1 :(得分:0)

您是否将SelectedValue设置为CarePlanCatalogs.AllLinkedClassifications中的LinkedClassification实例之一或创建另一个实例?

如果您创建另一个实例,则应该在LinkedClassification上覆盖Equals和GetHashCode,因此wpf可以在CarePlanCatalogs.AllLinkedClassifications中找到您的LinkedClassification