我的程序需要一些帮助。我做了简单的程序,用于添加删除它们并保存的类别。该程序看起来像这样
所有选项都有效,但是当我点击"添加类别"我无法在列表框中看到我的类别的名称,我也不知道为什么如果有人可以帮我解决这个问题会很棒。
XAML代码:
<Grid>
<TextBox Name="CategoryTextBox" HorizontalAlignment="Left" Height="23" Margin="25,26,0,0" TextWrapping="Wrap" Text="Category Name" VerticalAlignment="Top" Width="120"/>
<Button Click="Button_Click" Content="Add Category" HorizontalAlignment="Left" Margin="171,26,0,0" VerticalAlignment="Top" Width="111"/>
<Button Click="Button_Click_1" Content="Save" HorizontalAlignment="Left" Margin="171,104,0,0" VerticalAlignment="Top" Width="111"/>
<Button Click="Button_Click_2" Content="Delete Category" HorizontalAlignment="Left" Margin="171,64,0,0" VerticalAlignment="Top" Width="111"/>
<ListBox Name="CategoryListBox" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="195" Margin="25,64,0,0" VerticalAlignment="Top" Width="120">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding CategoryName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
CategoryList.cs代码:
public partial class CategoryList
{
public string CategoryName { get; set; }
}
C#代码:
public void Button_Click(object sender, RoutedEventArgs e)
{
List<CategoryList> cat = new List<CategoryList>();
string text = CategoryTextBox.Text;
cat.Insert(0, new CategoryList { CategoryName = text });
}
答案 0 :(得分:0)
首先,看起来您没有数据上下文。如你所说,你正在使用代码隐藏,所以在构造函数中我会做这样的事情
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
SomeList = new ObservableCollection<CategoryList>();
}
public ObservableCollection<CategoryList> SomeList { get; set; }
}
其次,您应该将集合类型更改为ObservableCollection。当您使用ObservableCollection时,它会在使用集合更改事件时自动更新绑定。
最后,您可以将Listbox itemsource设置为代码隐藏中的ObservableCollection属性。
<ListBox Name="CategoryListBox" ItemsSource="{Binding SomeList}" HorizontalAlignment="Left" Height="195" Margin="25,64,0,0" VerticalAlignment="Top" Width="120">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding CategoryName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
然后,当您使用AddCategory按钮事件向ObservableCollection添加数据时,它将更新集合并同时更新列表框。