【问题标题】:Windows phone 8.1 Binding only "Left" Margin propertyWindows phone 8.1 仅绑定“Left” Margin 属性
【发布时间】:2014-11-06 18:33:58
【问题描述】:

我有一个静态资源:

<x:Double x:Key="dOffset">9.6</x:Double>

我想将此资源分配给样式中的Margin.Left 属性。

我试过这个:

  <Style x:Key="HomeButtonTextContainer" TargetType="StackPanel">
        <Setter Property="Margin">
            <Setter.Value>
                <Binding Path="Thickness">
                    <Binding.Source>
                        <local:CustomThickness Left="{StaticResource dOffset}" Top="0" Bottom="0"  Right="0" />
                    </Binding.Source>
                </Binding>
            </Setter.Value>
        </Setter>
    </Style>

但它不起作用。 我不能像下面这样将厚度声明为资源,编译器会抱怨它。

 <Thickness x:Key="dOffset" Left="9.6" Right="0" Left="0" Top="0"></Thickness>

我不能从厚度类派生,所以我必须制作一个自定义的厚度来构建厚度(CustomThickness 类)

我该如何解决这个问题?

【问题讨论】:

    标签: c# windows xaml mobile windows-phone-8.1


    【解决方案1】:

    您不能只设置 TopMargin。您应该设置厚度实例的所有值。如果您不想更改其他边距,只需将它们设置为零即可。

    XAML

     <Style x:Key="HomeButtonTextContainer"
                   TargetType="StackPanel">
                <Setter Property="Margin"
                        Value="{Binding Source={StaticResource dOffset}, 
                        Converter={StaticResource myConverter}}">                   
                </Setter>
    

    您应该创建返回厚度实例的转换器类:

    public class MyConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var topMargin = (double)value;
            return new Thickness(0, topMargin, 0, 0);
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    编辑: Windows Phone 不支持绑定 setter 的值。或许this的文章对你有帮助。

    【讨论】:

    • 这与我在我的问题中所做的相同。我收到此错误:无法分配给属性“%0”。 [行:45 位置:54]
    • 如果你提供更多关于错误信息的细节,我可以说WP不支持绑定setter的值。您可以在我编辑的答案中查看解决方法。
    猜你喜欢
    • 2015-06-08
    • 2015-08-25
    • 2014-05-19
    • 1970-01-01
    • 2011-06-21
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多