以下是我的数据结构:
public class TokenItems
{
public int ID { get; set; }
public int itemID { get; set; }
public string name { get; set; }
public int qty { get; set; }
public int twQty { get; set; }
public bool readyStatus { get; set; }
public Nullable<DateTime> orderOn { get; set; }
public int styleType { get; set; }
}
public class Token
{
public int tokenNo { get; set; }
public Nullable<DateTime> startedOn { get; set; }
public List<TokenItems> tokenItems { get; set; }
public bool readyStatus { get; set; }
public bool acceptStatus { get; set; }
}
以上结构非常适合以下DataTemplate。 (它有多个数据模板,DataTemplate中的DataTemplate)
TokenPanel拥有来自Token类的数据,该数据从后面的代码中分配,如下所示:
TokenPanel.ItemsSource = List<Token> filledList;
tokenItems在XAML中分配:
ItemsSource = {Binding List<TokenItems> tokenItem}
tokenItems的模板还包含从tokenItem的列表项创建的按钮模板。
我已使用Click事件(listClick)将自定义样式(redButton)应用于按钮。
<ScrollViewer>
<ItemsControl x:Name="TokenPanel">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.119*"/>
<RowDefinition Height="0.881*"/>
</Grid.RowDefinitions>
<TextBlock TextWrapping="Wrap" Text="{Binding tokenNo}" />
<StackPanel Grid.Row="1" Width="Auto" HorizontalAlignment="Stretch">
<ItemsControl Height="Auto" ItemsSource="{Binding tokenItems}" HorizontalAlignment="Stretch" Width="Auto">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Height="38" Width="Auto" Style="{StaticResource redButton}" HorizontalContentAlignment="Stretch" Click="listClick" >
<TextBlock Text= "{Binding name}"/>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" x:Name="tokenListBox" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
该程序编译良好,没有任何错误。但是,当我更新TokenList时,它在XAML解析中的某处显示了NullReference异常的错误。
我尝试从XAML中删除Click事件属性,而不分配任何点击事件。这个执行程序非常好。但我不能点击我想要的最重要的按钮。此外,我也需要定制风格。
我无法弄清楚问题是什么......快速修复将受到高度赞赏。
编辑:
这会更新tokenList;
public void update() {
List<TokenItems> tempList = new List<TokenItems>();
tokenList.Clear(); // clears previous items in tokenList;
while(database.Read()) {
tempList.Add(new Token() {
item= (int)database["item"]
});
}
var temp = new List<BumpBar.TokenItems>();
temp.AddRange(tokenModify(tempItems)); // modifies the items within the list
tempItems.Clear(); // clear to refill the tempItems
tempItems.AddRange(temp);
tokenList.Add(new Token() {
tokenNo = tokensList[i].tokenNo,
tokenItems = tempItems,
startedOn = tokensList[i].startedOn
});
}
答案 0 :(得分:0)
发布与此评论相关的代码。我猜你不小心弄清了那个令牌列表。
该程序编译良好,没有任何错误。但是,当我更新它显示的TokenList时 在XAML解析中的某处出现NullReference异常错误。