Привязка данных WPF и расположение каскадом Преобразователей?

Вот пример кода, который работает с использованием вызова select.

Он , только работает для новой строки, потому что уровень TTY в ядре будет удерживаться до тех пор, пока он не получит новую строку.

Итак, для любого другого символа (например, пробела) нам нужно было бы выполнить вызовы ioctl, о которых я упоминал в моих главных комментариях, чтобы перевести слой в «сырой» режим (по сравнению со значением по умолчанию «cooked»). , Если вам это нужно, см. tcgetattr и tcsetattr звонки.

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <sys/time.h>
#include <sys/select.h>

int
main(void)
{
    int fd;
    char buf[10];
    int len;
    fd_set rdset;

    fd = 0;

    while (1) {
        // this is do whatever until newline is pressed ...
        printf(".");
        fflush(stdout);

        // set up the select mask -- the list of file descriptors we want to
        // wait on for read/input data available
        FD_ZERO(&rdset);
        FD_SET(fd,&rdset);

        // set timeout of 1ms
        struct timeval tv;
        tv.tv_sec = 0;
        tv.tv_usec = 1000;

        // wait for action on stdin [or loop if timeout]
        // the first arg must be: the highest fd number in the mask + 1
        len = select(fd + 1,&rdset,NULL,NULL,&tv);
        if (len <= 0)
            continue;

        // we're guaranteed at least one char of input here
        len = read(fd,buf,1);
        if (len <= 0)
            continue;

        // wait for newline -- stop program when we get it
        if (buf[0] == '\n')
            break;
    }

    printf("\n");

    return 0;
}
11
задан Joachim Kerschbaumer 17 October 2008 в 07:33
поделиться

2 ответа

Вы могли попытаться использовать MultiBinding и связать дважды с тем же источником, но с различными преобразованиями на единственной привязке. Что-то как:

<SomeControl>
    <SomeControl.Visibility>
        <MultiBinding Converter="{StaticResource combiningConverter}">
            <Binding Path="SomeProperty" Converter="{StaticResource firstConverter}"/>
            <Binding Path="SomeProperty" Converter="{StaticResource secondConverter}"/>
        </MultiBinding>
    </SomeControl.Visibility>
</SomeControl>

Затем в 'combiningConverter' Вы помещаете логику для объединения значений, прибывающих из этих двух привязки.

7
ответ дан 3 December 2019 в 04:15
поделиться

Можно искать решение, подобное Josh Smith, "Передающему Преобразователи Значения по каналу".

В его статье он представляет следующее:

<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
  <local:IntegerStringToProcessingStateConverter  />
  <local:EnumToDisplayNameConverter />
</local:ValueConverterGroup> 

И затем использует преобразователи мультизначения следующим образом:

<TextBlock Text="{Binding XPath=@Status, 
             Converter={StaticResource statusDisplayNameGroup}}" />

Надеюсь, это поможет!

18
ответ дан 3 December 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: