如何在XAML中将双值资源绑定到另一个资源?

时间:2019-05-29 16:35:51

标签: wpf xaml binding resources double

我想将特定ResourceDictionary中定义的特定双值资源绑定到另一个更通用的ResourceDictionary中的另一个双值资源。

我有一个一般的system.double值在一般的ResourcDictionary中定义:

<sys:Double x:Key="Base.Length">16</sys:Double>

我想将另一个特定值绑定到它,例如:

    <sys:double x:Key="Icon.Height" 
                Value="{Binding Source={StaticResource Base.Length}, Path=Value}"/>

那是行不通的,因为没有提供值路径,而且我找不到其他要绑定的路径。

绑定到特定值属性肯定可以在其他情况下工作,例如:

<Color x:Key="SampleColor" Color="{Binding Source={StaticResource BaseColor}, Path=Color}"/>

我想念什么?


我自己的解决方案:

自定义双班:

public class Double : DependencyObject
{
    public string Value
    {
        get { return (string)GetValue(ValueProperty); }
        set { SetValue(ValueProperty, value); }
    }
    public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(string), typeof(Double), new PropertyMetadata(null));
}

常规资源属性:

<local:Double x:Key="Base.Length.Single" Value="16" />
<local:Double x:Key="Base.Length.Double" Value="32" />

绑定特定属性:

<local:Double x:Key="MenuItem.Height"
              Value="{Binding Source={StaticResource Base.Length.Double}, Path=Value}" />

例如在菜单项控制模板中进行引用:

    <Border x:Name="MenuItemBorder"
            Height="{Binding Source={StaticResource MenuItem.Height}, Path=Value}">

0 个答案:

没有答案