【问题标题】:Combo box add item from template组合框从模板添加项目
【发布时间】:2014-05-19 14:50:56
【问题描述】:

我试图将项目从后面的代码添加到组合框到项目模板,但我得到了空值。这是我目前所拥有的:

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;
    }
}

【问题讨论】:

    标签: c# wpf xaml combobox datatemplate


    【解决方案1】:

    您在此处尝试执行的操作存在脱节。您已经指定了一个ItemTemplate - 它定义了列表中每个项目 的外观。

    但随后您试图通过FindName 函数恢复一个ComboBox。这让我相信你真的打算设置Template,而不是ItemTemplate

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

    【讨论】:

    • 是的,我尝试了另一种方式,但我得到了同样的错误。组合框总是获得 null 值。
    • 你应该换一种方式,先添加项目,然后选择它。如果组合框为空,则可能是您使用“get; set;”发回值的方式。代码。通常我只是将文本/名称和值设置为相同的字符串。
    • 我这样做了,我得到了这个错误 Object reference not set to an instance of an object.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多