Проблема с Windows Phone IValueConverter - PullRequest
2 голосов
/ 15 февраля 2012

Я не могу заставить его работать с IValueConverter для Windows Phone 7.0. Вот мой код XAML для связанного элемента:

<TextBlock Text="{Binding Verified, Converter={StaticResource TextConverter}}" HorizontalAlignment="Left" VerticalAlignment="Bottom" FontSize="14" />

Вот код позади файла XAML.

public class TextConverter : System.Windows.Data.IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if ((bool)value == false)
        {
            return ("Verified is False!");
        }
        if ((bool)value == true)
        {
            return ("Verified is True!");
        }
        else
        {
            return ("Error!");
        }
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

Кажется, это правильно, но кажется, что приложение не может даже найти класс TextConverter, я должен объявить его где-нибудь? Когда я запускаю это приложение, я получаю Application_UnhandledException. Я надеюсь, что кто-нибудь может мне помочь, спасибо.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Вы должны добавить конвертер к ресурсам:

Если вы хотите использовать его в своем приложении, поместите его в App.xaml

<Application
    ....
    ....
    xmlns:converter="clr-namespace:NAMESPACE;assembly=ASSEMBLY">

<Application.Resources>
    <converter:TextConverter x:Key="TextConverter"/>
</Application.Resources>

Если вы хотите его в одномОкно вставьте его в [Window] .xaml

<Window
    ....
    ....
    xmlns:converter="clr-namespace:NAMESPACE;assembly=ASSEMBLY">

<Window.Resources>
    <converter:TextConverter x:Key="TextConverter"/>
</Window.Resources>

Убедитесь, что вы изменили NAMESPACE и ASSEMBLY на то, что у вас есть

3 голосов
/ 15 февраля 2012

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

xmlns:src="clr-namespace:MyNameSpace"

Добавьте ваш конвертер в раздел ресурсов.Первый элемент на вашей странице PhoneApplication тогда будет:

<Control.Resources>
    <src:TextConverter x:Key="myConverter"/>
</Control.Resources>

Тогда вы сможете получить доступ к своему классу через его ключ:

... Text="{Binding Verified, Converter={StaticResource myConverter}}" ...

Nico

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