我想将特定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}">