safonovea
- Вопросы
- Ответы
Имя | Евгений Сафонов |
Возраст | Неизвестно |
Сайт | Неизвестно |
Неизвестно | |
Участвует в проекте | 1105 дн., 2 час., 35 мин. |
Последняя активность | 492 дн., 11 час., 9 мин. назад |
Ответы
Перейти к вопросу →
- Садимся на событие ObservableCollection.CollectionChanged
- В обработчике подписываемся/отписываемся (в зависимости от того добален ли элемент или удален) на событие PropertyChanged у элемента.
- В обработчике события PropertyChanged поднимаем событие CollectionChanged.
Перейти к вопросу →
Насчет стандартов не могу сказать, выскажу лишь своё скромное мнение относительно модульных тестов:)
Проект с тестами
Tо же самое имя, что и у тестируемого проекта, но с добавлением ".Tests
".
Например, "SomeCoolProject.Tests
".
Класс с тестами
То же самое имя, что и у тестируемого объекта, но с добавлением "Tests
".
Например, "SomeCoolServiceTests
".
Метод класса с тестами
Имя составляется по шаблону <действие>Should<ожидаемый_результат>
Например, "SomeCoolActionShouldReturnTheCoolestResult
".
Такое наименование позволяет при первом же взгляде на проваленный тест прочитать какое из действий не приносит желаемого результата. К тому же способствует более четкому понимаю конкретной задачи и действий, необходимых для её решения. Ну и частично такой подход может быть своего рода руководством для пользователя. :)
Перейти к вопросу →
Вот статья на MSDN, описывающая как создать ListView в GridView, ячейки которого можно редактировать.
Смысл в следующем. Создается custom control, который впоследствии используется в качестве CellTemplate для столбца таблицы.
Перейти к вопросу →
Можно вот таким способом:
class Program
{
private delegate int SomeIntDelegate();
static void Main(string[] args)
{
SomeIntDelegate someIntDelegate = () =>
{
int result = 13;
return result;
};
someIntDelegate.BeginInvoke(CallbackProc, someIntDelegate);
Console.ReadKey();
}
private static void CallbackProc(IAsyncResult ar)
{
SomeIntDelegate someIntDelegate = (SomeIntDelegate) ar.AsyncState;
int res = someIntDelegate.EndInvoke(ar); => То, что нужно!
Console.WriteLine(res);
}
}
Перейти к вопросу →
Насколько я помню, они по-умолчанию так и располагаются. Т.е. если поместить в одну ячейку Grid'а два контрола, то один перекроет другой.
Перейти к вопросу →
Можно, но, поскольку у System.String нет конструктора без параметров, то необходимо передать что-то в качестве параметра конструктора. Например:
<object id="testString" type="System.String">
<constructor-arg index="0">
<value></value>
</constructor-arg>
</object>
Перейти к вопросу →
Можно использовать следующие свойства класса SystemParameters
:
System.Windows.SystemParameters.PrimaryScreenWidth;
System.Windows.SystemParameters.PrimaryScreenHeight;
Перейти к вопросу →
Alt+Home - перейти к родителю
Alt+End - перейти к потомку
Shift+Alt+L - найти редактируемый файл в Solution Explorer
А вообще, как это ни странно, полезные комбинации клавиш есть не только у R#, но и у самой VS :)
Ctrl+M, Ctrl+O - свернуть код до определений методов/свойств
Ctrl+M, Ctrl+L - свернуть/развернуть весь код
Перейти к вопросу →
ItemsControl
генерирует элементы посредством интерфейса IItemContainerGenerator
. Свойство ItemContainerGenerator
ItemsControl
является типом ItemContainerGenerator
, реализующим интерфейс IItemContainerGenerator
. Таким образом можно вызвать объект ItemContainerGenerator
, связанный с ItemsControl
, с помощью свойства ItemContainerGenerator
. Например, при наличии привязки данных TreeView
и необходимости получения TreeViewItem
на базе его индекса или его связанного элемента данных можно использовать ItemContainerGenerator.ContainerFromIndex
или метод ItemContainerGenerator.ContainerFromItem
. Кроме того, можно использовать ItemContainerGenerator.IndexFromContainer
или метод ItemContainerGenerator.ItemFromContainer
для получения элемента индекса или данных, связанного с заданным сгенерированным элементом контейнера.