Вы можете использовать свойство Columns вашей таблицы данных, чтобы взаимодействовать со столбцами и скрывать ненужные столбцы.
datagrid.Columns.RemoveAt(IndexOftheColumn);
или если вы назвали свои столбцы
datagrid.Columns.RemoveAll(x => x.Name = "column name");
или если возможно, что вам понадобится столбец позже
datagrid.Columns[IndexOftheColumn].Visibility = Visibility.Collapsed;
Это также можно сделать с чистый Xaml с привязками, но так как вы новичок в Wpf, я бы посоветовал сначала сделать это в коде (.cs вашего элемента управления Wpf).
Что касается выбора столбцов, которые нужно скрыть, вы можете передать список имен столбцов, которые вы хотите удалить, в конструкторе элемента управления или с привязкой. Есть много способов сделать это.
Или вы можете сделать наоборот и динамически добавлять столбцы в зависимости от ваших потребностей.
Обратите внимание, что этот вопрос задавался ранее
.
Конструкторы не наследуются в C #. Вам нужно будет связать их вручную:
public TheServer(int port)
: base(port)
{
}
Также, если Start защищен, вам нужно будет создать какой-то открытый метод, который его вызывает:
public void StartServer()
{
Start();
}
И, что бы это ни стоило, я бы порекомендовал использовать:
UDPServer serv = new TheServer(20501);
serv.start();
Или, возможно, даже более общий, Сервер. Зависит от того, какие методы нужно вызывать на серв.
Вашему производному классу необходимо добавить конструктор с одним параметром и делегировать его базовому классу:
public TheServer(int port) : base(port) {}
Кроме того, защищен метод Start
. Вам понадобится свой собственный:
public void StartMe(){base.Start();}
Вы не определили конструктор TheServer с одним аргументом, поэтому вы не можете вызвать TheServer (20501); вы не определили конструктор с нулевыми аргументами для UDPServer, но вы определили один с одним аргументом. Два ваших метода в TheServer защищены, поэтому ошибка # 2.
public class TheServer
{
public TheServer():base(port) {
}
}
var myServer = new TheServer(1337).Brings().All().The().Boys().to().The().Yard()
Добавить конструктор в TheServer, который вызывает базовый конструктор (из UDPServer); как то так:
public TheServer(int port) : base(port) {}
2 Проверьте метод Start на UDPServer: он защищен. Это означает, что только подклассы этого класса могут вызывать его.
Вам нужно будет опубликовать код в своем классе Abstract, но по полной оценке,
У вас есть ctor
в вашем классе UDPServer, который у вас нет не реализован в вашем классе TheServer ... Вам нужно что-то вроде ...
public TheServer(int port) : base(port)
{
... specifics
}
И вы также забыли переопределить метод Start () в своем классе TheServer но он помечен как закрытый в базовом классе ... Ваш базовый класс должен иметь что-то вроде ...
//In UDPServer
protected void Start()
{
//Code to start
}
//In TheServer
protected void StartTheServer()
{
base.Start();
}
Эти ошибки на самом деле имеют довольно простые причины:
Вы не определили конструктор в своем производном классе ( TheServer
). Конструкторы (в отличие от методов, конечно) не наследуются автоматически, поэтому вам нужно объявить конструкторы, которые совпадают с вами, в родительском классе и объединить их в цепочку, используя что-то вроде:
public TheServer (int port): base (port )
{
// Ваш код здесь.
}
public TheServer (): base ()
{
// Ваш код здесь.
}
Метод Start
объявлен как защищенный
в базовом ( UDPServer
) классе. Либо измените модификатор доступа в базовом классе на public
, либо найдите способ вызова метода из производного класса, когда это необходимо (последний должен был быть предназначен автором UDPServer)
).
Надеюсь, это поможет.