文本框未添加到StackPanel

时间:2014-01-16 09:31:24

标签: c# wpf xaml

我昨天在工作中发现了错误的代码。我在同一个列表中添加了两种不同类型的Texboxes。当我更改其中一个属性名称时,它们现在不会出现在StackPanel

让我告诉你,这是我的工作财产,当我点击一个按钮时,它会向Textbox添加标题Stackpanel

ObservableCollection<string> _title = new ObservableCollection<string>();
public ObservableCollection<string> Title
{
    get { return _title; }
    set
    {
        _title = value;
        OnPropertyChanged(() => Title);
    }
}

这很有效,当我点击一个按钮时,它会将标题Texbox添加到StackPanel。当我尝试为问题Textbox做这件事时,它不会起作用:

ObservableCollection<string> _questions = new ObservableCollection<string>();
public ObservableCollection<string> Questions
{
    get { return _questions; }
    set
    {
        _questions = value;
        OnPropertyChanged(() => Questions);
    }
}

我不明白为什么它不会添加,因为我已经调试了标题问题的代码并且它们完全一样?

有没有人知道我在代码中犯的错误?

编辑:

public ViewModel()
{
        this.AddQuestionCommand = new RelayCommand(new Action<object>((o) => OnAddQuestion()));
        this.AddTitleCommand = new RelayCommand(new Action<object>((o) => OnAddTitle()));
}

private void OnAddQuestion()
{
        this.Questions.Add("Question...");
}

private void OnAddTitle()
{
        this.Title.Add("Title...");
}

                                                                                                                                                                                                      

        <ListView x:Name="QuestionList" ItemsSource="{Binding Question}" ItemTemplate="{DynamicResource Template}">
            <ListView.ItemContainerStyle>
                <Style>
                    <Setter Property="FrameworkElement.Margin" Value="40,20,0,0"/>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.Resources>
                <DataTemplate x:Key="Template">
                    <TextBox Text="{Binding .}" Width="200" HorizontalAlignment="Left"/>
                </DataTemplate>
            </ListView.Resources>
        </ListView>

编辑2:

    ViewModel _viewModel = new ViewModel();
    public MainWindow()
    {
        InitializeComponent();
        base.DataContext = _viewModel;
    }

2 个答案:

答案 0 :(得分:1)

您的错误显然不在此处显示的代码中。除了名称,两个代码示例是相同的。因此,如果一个正在工作而另一个不工作,那么其他地方的其他东西就会被打破。这也代表您第一次编辑中的代码。您只需要查看两个完整的示例(包括XAML),看看有什么不同。

请仔细阅读帮助中心的How to create a Minimal, Complete, Valid Example页面,该页面可以帮助您提供更好的代码示例。通常,遵循这些指导原则也可以帮助您解决自己的问题。

答案 1 :(得分:1)

你的财产是'问题'而非'问题' - 它可能是问题来源