我有一個包含多個專案的串列框。它們是在運行時動態添加的。
這些專案中的每一個都有一個具有相同數量專案的組合框,也應該在運行時添加。
<ListBox x:Name="ListBox_Parcels"
ItemsSource="{Binding}"
SelectionMode="Multiple"
SelectionChanged="ListBox_Parcels_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="Transparent" Cursor="Hand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock x:Name="tb_title"
Grid.Column="0"
Text="{Binding Name}" />
<ComboBox x:Name="Combobox_ParcelPreset"
Grid.Column="1"
SelectionChanged="ComboBox_ParcelPreset_SelectionChanged">
<ComboBoxItem Content="initItem1"/>
<ComboBoxItem Content="initItem2"/>
</ComboBox>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ComboBox_ParcelPreset現在我想向串列框中的所有內容添加一個專案(運行時的背景代碼) 。我希望能夠在串列框中設定特定組合框的選定索引,并且當用戶更改組合框的選擇以獲取組合框和串列框的索引時。
我的問題是,它ComboBox_ParcelPreset不存在,ListBox_Parcels也沒有任何方法可以訪問 ComboBox。
Itemlist_Parcels = new ObservableCollection<ClParcelItem>();
ListBox_Parcels.DataContext = Itemlist_Parcels;
如果我更改組合框中的選擇,我也不會得到串列框的索引。
歡迎任何提示。
uj5u.com熱心網友回復:
幫助我的是: 如何使用 DataTemplate 訪問串列框中的特定專案?
for (int i = 0; i< ListBox_Parcels.Items.Count; i )
{
ListBoxItem lbi = (ListBoxItem)ListBox_Parcels.ItemContainerGenerator.ContainerFromIndex(i);
ComboBox cb = FindDescendant<ComboBox>(lbi);
cb.Items.Add(preset[0]);
editing_parcel = (ClParcelItem)ListBox_Parcels.Items[i];
if (ParcelNames.Exists(n => n == editing_parcel.Name))
{
cb.SelectedIndex = cb.Items.Count - 1;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/513557.html
