组合框从模板添加项目

时间:2014-05-19 14:50:56

标签: c# wpf xaml combobox datatemplate

我试图将项目从后面的代码添加到组合框到项目模板,但我得到null。这就是我到目前为止所做的:

XAML:

<ListBox x:Name="lsbCiertoYFalsoInsideTemplate" Margin="40,0,0,0" ItemTemplate="{StaticResource CiertoYFalsoExcerciseDataTemplate}"/>

的App.xaml:

<DataTemplate x:Key="CiertoYFalsoExcerciseDataTemplate">
            <Grid>
                <StackPanel x:Name="stckCiertoYFalsoInsideTemplate" Margin="0" Orientation="Vertical" Width="1100">
                    <StackPanel x:Name="stckPreguntasCiertoYFalso" Orientation="Horizontal">
                        <Grid Height="50" Width="65" DataContext="{Binding CustomValueList}" VerticalAlignment="Top">
                            <ComboBox x:Name="cbExercises" Style="{StaticResource SA_ComboBoxStyle}" ItemsSource="{Binding CustomOption}" BorderBrush="#CC8C8C8C" VerticalAlignment="Top">
                            </ComboBox>
                        </Grid>
                        <TextBlock HorizontalAlignment="Center" Margin="5,3,0,0" TextWrapping="Wrap" Text="{Binding QuestionNumber}" VerticalAlignment="Top" FontWeight="Bold" Foreground="Black" Width="26" FontFamily="{Binding FontFamily, Source={StaticResource TextBlockStyleManager}}" FontSize="{Binding FontSize, Source={StaticResource TextBlockStyleManager}}"/>
                        <TextBlock TextWrapping="Wrap" Text="{Binding Question}" Foreground="Black" VerticalAlignment="Top" FontSize="{Binding FontSize, Source={StaticResource TextBlockStyleManager}}" Margin="10,3,0,0" Width="968" FontFamily="{Binding FontFamily, Source={StaticResource TextBlockStyleManager}}"/>
                    </StackPanel>
                </StackPanel>
            </Grid>
        </DataTemplate>

我得到的错误是对象超出范围。

代码:

private void ComboBoxExercises()
{
    ComboBox comboBox = new ComboBox();
    ComboboxItem item = new ComboboxItem();

    item.Text = "A";

    comboBox = (ComboBox)lsbCiertoYFalsoInsideTemplate.FindName("cbExercises");
    comboBox.SelectedIndex = 0;
    comboBox.Items.Add(item);
}

public class ComboboxItem
{
    public string Text { get; set; }

    public override string ToString()
    {
        return Text;
    }
}

1 个答案:

答案 0 :(得分:0)

你在这里尝试做的事情已经脱节了。您已指定ItemTemplate - 其中定义列表中的每个项目的外观。

但是,您正试图通过ComboBox功能让一个FindName退出。这让我相信您确实打算设置Template,而不是ItemTemplate

也就是说,我认为您收到的错误是因为当SelectedIndex中没有任何内容时您将0设置为ComboBox。你告诉它选择第一个,但没有什么可以选择的。您应该先添加项目,然后选择它。