Как установить значение свойства, которое можно обнулять, с помощью стиля Setter?

Я занимаюсь разработкой приложения для Магазина Windows (8.1).

У меня есть этот элемент управления, который имеет свойство int обнуляемого типа (типа "int?"), Когда я пытаюсь установить его для int через стиль, я получаю ошибку.

<Setter Property="Minimum" Value="0" />

Error Cannot assign to nullable type on property Minimum

Есть идеи?

2 ответа

Следующий пример изображает решение, приспособьте его к вашим требованиям.

C#:

class IsNullToBoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value == null;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

XAML:

 <Window.Resources>
        <local:IsNullToBoolConverter x:Key="IsNullToBoolConverter"/>
 </Window.Resources>

    <TextBlock Text="Text">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Age, Converter={StaticResource IsNullToBoolConverter}}" Value="False">
                        <Setter Property="FontSize" Value="55"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>

Вы можете достичь этого, используя свойство TargetNullValue. Используйте приведенный ниже код,

TargetNullValue={x:Static sys:String.Empty}

Замечания:

sys импортированное пространство имен xml для System в mscorlib:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

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

Другие вопросы по тегам