內容,我有以下XAML代碼:動態DataGrid列和XAML
<TabControl Grid.Row="1" x:Name="tabs" ItemsSource="{Binding}">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="Visibility" Value="{Binding Visibility}" />
</Style>
</TabControl.ItemContainerStyle>
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<WrapPanel Grid.Row="0">
<ComboBox VerticalAlignment="Center" HorizontalAlignment="Left" Width="100" ItemTemplate="{StaticResource CCCItemTemplate}" ItemsSource="{Binding Subtypes}" />
<ComboBox VerticalAlignment="Center" HorizontalAlignment="Left" Width="100" ItemTemplate="{StaticResource CCCFileItemTemplate}" ItemsSource="{Binding Files}" />
</WrapPanel>
<DataGrid Grid.Row="1" ItemsSource="{Binding Path=Files}" />
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
當標籤本身被動態地通過XAML添加tabs.DataContext = fileTypes;
。 每個選項卡都有自己的DataGrid,與「FileType」類關聯。 每個文件類型類有一個public ObservableCollection<SecondaryFile> Files { get; set; } = new ObservableCollection<SecondaryFile>();
,每個SecondaryFile具有
public ArrayList Columns { get; set; } = new ArrayList();
...
public string[][] data { get; set; };
反正是有列和數據綁定到通過XAML電網? 請記住,TabItems和匹配的DataGrids本身是動態的,就像列數及其內容一樣。
我試圖以動態的方式給網格命名,所以我可以以編程方式訪問它,但無濟於事。
任何建議將更受歡迎!
謝謝!
謝謝!由於某些原因,使用Path = Files.Table似乎不起作用。我當前的解決方法是在FileType下創建另一個DataTable,並使用Merge合併所有SecondaryFile的列和其中的數據。 我在使用Path = Files.Table時丟失了什麼?我應該,也許,將fileTypes變量綁定到DataContext以外的東西? – hyit
由於我沒有你的完整文件,我不能肯定地說出了什麼問題。試着改變你的第一行(在考試代碼中)'ItemsSource =「{Binding}」'和你綁定的'root'對象的名字。如果沒有錯誤,應該是'=「{Binding fileTypes}」'。 – Athafoud