Я пишу графический интерфейс для передачи через торрент-сервер. Для хранения информации о торренте я использую ObservableCollection:
public partial class Torrents
{
private static ObservableCollection<Torrent> _list = new ObservableCollection<Torrent>();
public static ObservableCollection<Torrent> List { get { return _list; } }
}
Для отображения торрентов я использую DataGrid, которая привязана к моей коллекции ObservableCollection:
<DataGrid x:Name="dataGrid" CanUserReorderColumns="True" AutoGenerateColumns="False" ItemsSource="{Binding Source={StaticResource TorrentsClass}, Path=List}" CanUserResizeRows="False" CanUserSortColumns="True" IsReadOnly="True" CellStyle="{StaticResource RightAlignment}">
<DataGrid.Columns>
<DataGridTextColumn Header="#" Binding="{Binding Path=Id}" />
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Size" Binding="{Binding Path=Size, Converter={StaticResource SizeConverter}}"/>
<DataGridTextColumn Header="Download Speed" Binding="{Binding Path=DownSpeed, Converter={StaticResource SpeedConverter}}"/>
<DataGridTextColumn Header="Upload Speed" Binding="{Binding Path=UpSpeed, Converter={StaticResource SpeedConverter}}"/>
<DataGridTextColumn Header="Ratio" Binding="{Binding Path=Ratio, StringFormat=F2}"/>
</DataGrid.Columns>
</DataGrid>
Пока все работает (пока не могу опубликовать изображения):
Но для отображения статуса торрента (будь то пауза, загрузка, заполнение, перепроверка и прогресс на указанных вещах) я хочу иметь индикатор выполнения, как в uTorrent:
Я создал пользовательский UserControl с ProgressBar и TextBlock, и он работает.
Но как добавить UserControl в столбец Status? И как привязать к нему данные из моей ObservableCollection? Я думаю, поскольку он будет предоставлять несколько данных (прогресс, перечисление с состоянием торрента), возможно ли связать его с объектом с указанными свойствами?
Позже я буду реализовывать контекстные меню в DataGrid, чтобы позволить приостанавливать выбранные торренты (пока не знаю, как ... пока) и т. Д., Возможно, использование DataGrid не лучшая идея? Что бы вы предложили, если нет?