如何通过Style setter设置可为空的属性值?

时间:2015-06-30 16:52:41

标签: c# .net wpf windows-store-apps winrt-xaml

我正在开发Windows应用商店(8.1)应用程序。

我有这个控件,它有一个可以为null的int属性(类型为“int?”),当我尝试通过Style将它设置为int时,我收到错误。

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

Error Cannot assign to nullable type on property Minimum

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

以下示例描述了解决方案,根据您的要求进行调整。

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>

答案 1 :(得分:0)

您可以使用TargetNullValue属性来实现此目的。使用下面的代码,

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

注意:

sys是mscorlib中System的导入xml命名空间:

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

希望这会有所帮助..