我想將 ObservableCollection 系結到 Datatemplate 內的 Itemscontrol,即在另一個 Datatemplate 內:
<ListView x:Name="list_befehlsfolge" Margin="5">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type local:Befehlszeile}" >
<Expander Margin="5" Header="{Binding Path=Bezeichnung,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<ItemsControl ItemsSource="{Binding Path=SubBefehlsliste}">
<DataTemplate DataType="{x:Type local:SubZeile_Text}">
<TextBox Text="{Binding Path=text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
</DataTemplate>
</ItemsControl>
</Expander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
將源代碼系結到list_befehlsfolge.Itemsource后面的代碼沒有問題,但我該如何系結SubBefehlsliste?
當我創建一個新的實體SubBefehlsliste時
public class Befehlszeile : Position
{
public string Bezeichnung { get; set; } = "Befehlsname";
// crash at this line:
public ObservableCollection<Position> SubBefehlsliste { get; set; } = new ObservableCollection<Position>();
public Befehlszeile()
{
// SubBefehlsliste.Add(new SubZeile_Text());
}
}
它因錯誤而崩潰
InvalidOperationException:使用“ItemsSource”時操作無效。相反,使用 ItemsControl.ItemsSource 來訪問和修改專案。(用谷歌翻譯)
(Position 是 SubZeile_Text 等所有資料型別的“Mother”類,用于將所有資料添加到 ObservableCollection)
uj5u.com熱心網友回復:
您忘記為模板指定屬性。因此,您指定的模板是嘗試添加到 ItemsControl.Items 集合。
但是您不能同時使用 ItemsSource 和 Items。
另一個難以理解的時刻:在夏普代碼中,您使用Position類作為集合的元素,在資料模板中設定local:SubZeile_Text型別。
這些選項中哪個是正確的?
<ListView x:Name="list_befehlsfolge" Margin="5">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type local:Befehlszeile}" >
<Expander Margin="5" Header="{Binding Path=Bezeichnung,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<ItemsControl ItemsSource="{Binding Path=SubBefehlsliste}">
<!--Forgotten this line below-->
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:Position}">
<TextBox Text="{Binding Path=text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Expander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
PS提示:如果您不定義列,請使用 ListBox,而不是 ListView。
uj5u.com熱心網友回復:
最后我發現了問題,資料模板必須在“<ListView.Resources>”和“<ItemsControl.Resources>”內:
<ListView x:Name="list_befehlsfolge" Margin="5">
<ListView.Resources>
<DataTemplate DataType="{x:Type local:Befehlszeile}" >
<Expander Margin="5" Header="{Binding Path=Bezeichnung,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<ItemsControl ItemsSource="{Binding Path=SubBefehlsliste}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type local:SubZeile_Text}">
<TextBox Text="{Binding Path=text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
</Expander>
</DataTemplate>
</ListView.Resources>
</ListView>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/521343.html
上一篇:從矩形哈希碼中獲取Y位置
