我昨天在工作中发现了错误的代码。我在同一个列表中添加了两种不同类型的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;
}
答案 0 :(得分:1)
您的错误显然不在此处显示的代码中。除了名称,两个代码示例是相同的。因此,如果一个正在工作而另一个不工作,那么其他地方的其他东西就会被打破。这也代表您第一次编辑中的代码。您只需要查看两个完整的示例(包括XAML),看看有什么不同。
请仔细阅读帮助中心的How to create a Minimal, Complete, Valid Example页面,该页面可以帮助您提供更好的代码示例。通常,遵循这些指导原则也可以帮助您解决自己的问题。
答案 1 :(得分:1)
你的财产是'问题'而非'问题' - 它可能是问题来源