как использовать простое выражение «IF» для текстового блока - PullRequest
0 голосов
/ 03 марта 2012

Привет, у меня небольшая проблема.

Я использую привязку данных для извлечения данных из интернет-источника. Все идет хорошо, и данные отлично отображаются в текстовом блоке, который находится в шаблоне данных.

Пока все хорошо ..

Я использую оператор if для этого текстового блока

вроде:

    if (textblock.Text == ("good")

    {Do some stuff here}

Я имеюдобавил обработчик события Loaded в текстовый блок, и теперь я могу сделать:

    private void loadedevent_Loaded(object sender, RoutedEventArgs e)
    {
        var textBlock = sender as TextBlock;
        if (1 == 1)
        {
            textBlock2.Text = textBlock.Text;
        }
    }

Я сделал это только для того, чтобы проверить, скопируется ли текст в textBlock2.(Итак, я знаю, что это работает)

и тут возникает проблема:

Когда я говорю:

    private void loadedevent_Loaded(object sender, RoutedEventArgs e)
    {
        var textBlock = sender as TextBlock;
        if (textBlock.Text == "good")
        {
            do some stuff here
        }
    }

Это просто не сработает, и я уверен на 1000%, чтотекст внутри textblok == "хорошо"

Пожалуйста, помогите ... боролись с этим более 2 дней ...

Ответы [ 4 ]

1 голос
/ 03 марта 2012

Вероятно, событие Loaded срабатывает до того, как установлен текст TextBlock.

1 голос
/ 03 марта 2012

Это просто не сработает, и я на 1000% уверен, что текст внутри textblok == "good"

Я не убежден аналогичным образом.По сути, вы утверждаете, что язык не работает.Я могу гарантировать вам, что это не так.

Text! = "good", это очевидно.Убедитесь, что у вас нет непечатаемых символов (пробелы и пробелы в начале / конце являются очевидными для проверки).

Я не вижу упоминания о том, что вы вообще используете отладчик.Это должно быть вашим инструментом goto для подобных вещей.Вы проверяли значение во время выполнения в отладчике?

0 голосов
/ 03 марта 2012

вам, вероятно, нужно использовать

 SourceUpdated  Occurs when the source value changes for any existing property binding on this element. (Inherited from FrameworkElement.)

Это событие позволит вам увидеть, является ли введенное значение == хорошим (в режиме реального времени)

edit: в приведенном ниже коде вы просто проверяете значение вашего текстового блока. (помните, вы должны объявить событие в вашем TextBlock в xaml)

0 голосов
/ 03 марта 2012

Попробуйте использовать textblock.Text.Trim (). Равно ("хорошо")

Также, как сказал кто-то еще, Loaded, вероятно, вызывается до загрузки данных. Попробуйте использовать событие Shown или событие Textbox change. Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...