Metro / Windows Store App:相对图像源绑定不起作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Metro / Windows Store App:相对图像源绑定不起作用?相关的知识,希望对你有一定的参考价值。

我正在尝试为我的WinRT项目创建一个ImageToggleButton,以针对其IsChecked属性更改其图像。

在Visual Studio 2012和Windows 8的Visual Studio Express的设计器中,ToggleButton的行为符合预期,但是在运行时图像不会显示。

有什么想法吗?

XAML:
    <Page.Resources>
      <local:BooleanImageConverter x:Name="BoolImgConverter"/>
    </Page.Resources>

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
      <ToggleButton HorizontalAlignment="Left" Height="200" Margin="260,205,0,0" VerticalAlignment="Top" Width="833" Background="Yellow">
        <Image Source="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Parent.IsChecked, Converter={StaticResource BoolImgConverter}, ConverterParameter=Assets/chkMusic}"/>
      </ToggleButton>
    </Grid>

CodeBehind:
    public class BooleanImageConverter : IValueConverter
    {
      public object Convert(object value, Type targetType, object parameter, string culture)
      {
        bool state = (bool)value;
        string baseName = (string)parameter;

        return string.Format("{0}_{1}checked.png", baseName, state ? "" : "un");
      }

      public object ConvertBack(object value, Type targetType, object parameter, string culture)
      {
        return null;
      }
   }

代码说明:

我将图像控件放入ToggleButton中,并使用一个转换器将图像源绑定到包含(父)ToggleButton的IsChecked属性,该转换器根据IsChecked装饰给定的ConverterParameter来提供引用所需图像文件的字符串。 >

当然,我可以在后面的代码中执行此操作,但我希望尽可能在XAML中执行此操作。

此刻,我也不是在构建ControlTemplate之后,我会尝试使用RelativeSource FindAncestor和该论坛的其他建议,但是这些似乎在Windows Store Apps中不起作用(或者我错了吗?]。>

我将不胜感激。

感谢

(顺便说一句:我试图将Windows-store-app作为标签添加到这篇文章,但无法创建此新标签-别人会这样做吗]

我正在尝试为我的WinRT项目创建一个ImageToggleButton,以更改其IsChecked属性的图像。在Visual Studio 2012和Visual Studio Express的设计器中,用于...

答案

家长从未像您想的那样工作。有两种方法可以满足您的需求。

首先是保留RelativeSource绑定,但删除IsChecked的路径。这会将控制权传递给转换器。在其中,您可以使用VisualTreeHelper获取父项。

以上是关于Metro / Windows Store App:相对图像源绑定不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 8/Metro/Store 中为 RectangleGeometry(在 Image.Clip 中)设置动画

Windows 8 桌面应用程序(不是 Metro 或 Store 应用程序)是不是支持 SQL Server CE 3.5?

[Windows Store应用程序的MDI类型应用程序

无法使用 c# 导航到 Windows Metro App 上的页面

将 jQuery 与 Windows 8 Metro JavaScript App 一起使用会导致安全错误

使用 C# 在 Windows 8 Metro App 上发送 POST 请求