Рейтинг@Mail.ru
aave

aave

Print Friendly, PDF & Email

Чтобы сохранить пробелы в разметке XAML, необходимо в нужном узле задать атрибут:

xml:space="preserve"

Далее использовать пробелы и/или символы переноса строки:




x0A – это символ переноса строки в шестнадцатеричном фрмате в таблице символов ASCII с префиксом &#, который подсказывает это процессору XAML. Аналогичным образом можно использовать и другие непечатные символы из таблицы ASCII.

Например:

<TextBlock Text="Строка 1 &#x0A; Строка 2" xml:space="preserve" />
Print Friendly, PDF & Email
Подробнее ...
Print Friendly, PDF & Email

Чтобы сохранить перенос строки в XAML:

    <sys:String x:Key="myString" xml:space="preserve">My String with &#13; carry return</sys:String>

Здесь:

&#13;
– символ переноса строки в таблице ASCII;
xml:space="preserve"
– директива, указывающя парсеру XAML, что пробельные символы нужно сохранить. Если её не указать, парсер удалит все «лишние» пробелы, в т.ч. переносы строк.
Print Friendly, PDF & Email
Подробнее ...
Print Friendly, PDF & Email

Если нужно оперировать отдельными битами и секциями битов в 32-разрядных числах, в .NET существует тип System.Collections.Specialized.BitVector32. Его использование сводится к тому, что сначала необходимо определить секции и/или маски. Маски используются для оперирования отдельными битами, а секции – для оперирования группами битов внутри числа.

Dim b0 As Integer = BitVector32.CreateMask() 'инициализация битовых масок - нулевой (младший) бит
Dim b1 As Integer = BitVector32.CreateMask(b0) '1-ый бит
Dim b2 As Integer = BitVector32.CreateMask(b1) '2-ой бит
            
Dim s0 As BitVector32.Section = BitVector32.CreateSection(1)   'бит 0
Dim s6_1 As BitVector32.Section = BitVector32.CreateSection(&B11_1111, s0)  'биты 1..6
Dim s8_7 As BitVector32.Section = BitVector32.CreateSection(&B11, s6_1)  'биты 7..8
Dim s9 As BitVector32.Section = BitVector32.CreateSection(1, s7_8)  'бит 9

Dim s1 As BitVector32.Section = BitVector32.CreateSection(1, s0) 'бит 1
Dim s9_2 As BitVector32.Section = BitVector32.CreateSection(&B1111_1111, s1) 'биты 2..9

Пример использования секций битов:

Dim vector As New BitVector32(&HFFFF) 'создаём 32-битный вектор и инициализируем числом 0xFFFF
vector(s6_1) = 26 'задаём значение для секции битов 1..6
vector(s9) = 1 'задаём значение для секции 9, т.е. 9-го разряда

Для управления отдельными битами:

vector(b0) = 0 'задаём значение "0" младшего (0-го) бита
vector(b1) = 1 'задаём значение "1" для 1-го бита

vector(s1) = 1 'то же, что и предыдущая строка, только доступ через секцию

Если вы присвоите секции значение, большее, чем определено количеством битов в секции, «лишние» биты будут отрезаны. Например, при попытке записать в секцию s6_1 число 92 (0101_1100), оно будет урезано до 6-ти бит, т.е. получится число 28 (01_1100).

В .NET также существует тип BitArray, обладающий похожей функциональностью. Разница в том, что размер числа не ограничен 32-мя разрядами, а отдельные биты представлены типом Boolean. Из-за этого он занимает больше места в памяти. И он не позволяет создавать секции: вам придётся оперировать каждым битом отдельно. Но у него большая гибкость при создании, имеется несколько перегруженных версий конструктора под разные нужды.

Print Friendly, PDF & Email
Подробнее ...
Print Friendly, PDF & Email

Как в WPF привязать коллекцию типа Boolean к графическому элементу ListBox или ListView с дочерними элементами типа CheckBox?

Напрямую это сделать нельзя. Но можно написать специальный класс-обёртку над коллекцией типа Boolean. Назовём этот класс Wrapper, и пусть он будет обобщённым (generic), чтобы можно было его использовать и с другими простыми типами: