У меня есть TabControl
в моем приложении. Я хотел бы иметь столько TabItems
, сколько записей в моем словаре.TabItem DataTemplate с привязкой
Вот мой словарь:
public Dictionary<string , ObservableCollection<PerformanceCounter>> Counters
{
get { return _Counters; }
}
Dictionary<string, ObservableCollection<PerformanceCounter>> _Counters = new Dictionary<string , ObservableCollection<PerformanceCounter>>();
Каждая запись имеет строковый ключ и ObservableCollection объектов PerformanceCounter. Важным является то, что каждый объект PerformanceCounter обладает свойствами: CounterName и InstanceName - мне нужны эти два, чтобы отображать их.
Теперь, к моему XAML:
<TabItem Header="Memory">
<Grid Name="RAMGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListBox Name="RAMListBox" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" ItemsSource="{Binding Memory, Mode=OneWay}" SelectionMode="Multiple" BorderThickness="1" BorderBrush="#FF8B8B8B" SelectionChanged="RAMListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding CounterName, Mode=OneWay}" />
<Run Text="{Binding InstanceName, Mode=OneWay}" />
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="RAMSelectAllButton" Margin="0,10,0,0" Grid.Column="0" Grid.Row="1" Click="RAMSelectAllButton_Click" >
<TextBlock Text="SELECT ALL"/>
</Button>
<Button Name="RAMUnSelectAllButton" Margin="0,10,0,0" Grid.Column="1" Grid.Row="1" Click="RAMUnSelectAllButton_Click" >
<TextBlock Text="UNSELECT ALL"/>
</Button>
</Grid>
</TabItem>
Вот что я сделал, и, как вы уже знаете, это не работает. Вышеприведенный код предназначен только для одной записи моего словаря, где ключ - «Память».
В моем коде я поставил DataContext:
this.DataContext = appData.Counters;
appData.Counters что словарь я представил в начале.
Вот что я хотел бы достичь: Независимо от того, сколько записей в моем словаре, мой TabControl отобразит TabItem для каждого из них. Каждый TabItem имеет ListBox и 2 кнопки. Мне также нужно иметь доступ к ним (чтобы очистить список и щелкнуть событие для каждой кнопки).
Я действительно не знаю, как это сделать, надеюсь, вы сможете мне помочь.
Является ли количество элементов в вашем словаре изменяться во время выполнения? – Arie
Нет, это не изменится – Loreno
, затем проверьте это: https://stackoverflow.com/questions/2981046/wpf-binding-to-items-within-a-dictionary-by-key – Arie