WinRTプロジェクトのIsCheckedプロパティに関して画像を変更するImageToggleButtonを作成しようとしています。
VisualStudio2012およびVisualStudioExpress for Windows 8のデザイナーでは、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に配置し、IsCheckedに従って指定されたConverterParameterを装飾するコンバーターを使用して、含まれている(親)ToggleButtonのIsCheckedプロパティに画像ソースをバインドし、目的の画像ファイルを参照する文字列を提供します。
確かにこれはコードビハインドで実行できますが、可能な限りXAMLで実行したいと思います。
現時点では、ControlTemplateを作成した後ではなく、RelativeSource FindAncestorやこのフォーラムの他の提案を試したはずですが、これらはWindows Store Appsでは機能しなかったようです(または間違っていますか?)。
何か提案をいただければ幸いです。
ありがとう
(ところで:私はこの投稿にタグとしてwindows-store-appを追加しようとしましたが、この新しいタグを作成できませんでした-他の誰かがこれを行うでしょうか)