Xaml ThemeResource imagebrush与自定义控件属性绑定

时间:2017-07-18 03:08:00

标签: c# xaml uwp win-universal-app

我目前正在使用Windows UWP应用程序,其中我使用主题资源字典。

我的主题词典

<ResourceDictionary.ThemeDictionaries>
    <!-- Light Theme resources -->
    <ResourceDictionary x:Key="Light">
        ...
        <ImageBrush x:Key="Hamburger" ImageSource="Assets/Images/DarkHamburger.png"/>
        ...
    </ResourceDictionary>
    <!-- Dark Theme resources -->
    <ResourceDictionary x:Key="Dark">
        ...
        <ImageBrush x:Key="Hamburger" ImageSource="Assets/Images/LightHamburger.png"/>
        ...
</ResourceDictionary.ThemeDictionaries>

和自定义控件属性

public ImageBrush toggleButtonImage
    {
        get { return base.GetValue(toggleButtonImageProperty) as ImageBrush; }
        set { base.SetValue(toggleButtonImageProperty, value); }
    }
    public static readonly DependencyProperty toggleButtonImageProperty =
        DependencyProperty.Register("toggleButtonImage", typeof(ImageBrush), typeof(HomeHeaderControl), null);

最后如果我写这个,它就可以了

<HomeHeaderControl.toggleButtonImage>
     <ImageBrush  Stretch="UniformToFill" ImageSource="Assets/Images/LightHamburger.png"/>
</HomeHeaderControl.toggleButtonImage>

但主题资源绑定无法正常工作

toggleButtonImage="{ThemeResource Hamburger}"

其他绑定正在运行,但ImageBrush除外。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您必须使用绝对路径和位图图像

<ResourceDictionary.ThemeDictionaries>
<!-- Light Theme resources -->
<ResourceDictionary x:Key="Light">
    ...
    <BitmapImage x:Key="Hamburger" ImageSource="ms-appx:///Assets/Images/DarkHamburger.png"/>
    ...
</ResourceDictionary>
<!-- Dark Theme resources -->
<ResourceDictionary x:Key="Dark">
    ...
    <BitmapImage x:Key="Hamburger" ImageSource="ms-appx:///Assets/Images/LightHamburger.png"/>
    ...

答案 1 :(得分:0)

谢谢大家 我找到了失踪者。我在ImageSource中使用相对路径。

  

我用过 - &gt;       data .map(lambda row: (row[0:2], {row[2]}) .reduceByKey(lambda a, b: a.union(b)) .collect()    它修复了它。