私はトリガーに依存するコンテンツ、「アイコンボックス」という名前のContentControl
が含まれているカスタムButton
持っている:スタイルを使用してイメージコンテンツをContentControlに動的に設定する方法は?
ViewBox
とベクトルと
ControlTemplate
ある
<DataTrigger Binding="{Binding Path=Flag}" Value="icon1">
<Setter TargetName="IconBox" Property="Visibility" Value="Visible"/>
<Setter TargetName="IconBox" Property="Style"
Value="{DynamicResource icon1}"/>
</DataTrigger>
:
<Button>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<!-- somethig here ..... -->
<ContentControl x:Name="IconBox" HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="Collapsed" />
</Grid>
<ControlTemplate.Triggers>
<!-- triggers here -->
</ControlTemplate.Triggers>
<!-- closing tags ... -->
</Button>
は、トリガーのほとんどは次のようになります内部の画像。 それは既に知られています。
新しいモデルのプロパティに含まれるビットマップイメージを追加する必要があります。これをImage
とします。
だから私のような何かをしたい:
<DataTrigger Binding="{Binding Path=Flag}" Value="useImage">
<Setter TargetName="IconBox" Property="Visibility" Value="Visible"/>
<Setter TargetName="IconBox" Property="Style"
Value="{DynamicResource ImageTemplate}"/>
</DataTrigger>
ImageTemplate
どのようにしてのようになりますか?
私は、次のいずれかを試してみた:
<Style TargetType="ContentControl" x:Key="ImageTemplate">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Viewbox>
<Image>
<Image.Source>
<Binding RelativeSource="{RelativeSource Self}"
Converter="{StaticResource ImagePathConverter}"
Path="Image"/>
</Image.Source>
</Image>
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
しかし、それは動作しませんでした。どうして?
Image
は "image1.bmp" のように刺すが含まれており、ImagePathConverter
は単にそれに完全なパスを追加します - "リソース\%CurrentDir%をimage1.bmp \" コンバータ内部の
ブレークポイントはヒットしません。 1つの内部まではImage
ゲッター。 そしてなぜ私は考えていません。テンプレートやトリガー内でエラーが発生する可能性がありますか?
Canvas
のViewBox
のトリガーは、正常に動作します。
実行時にこの要素のプロパティをチェックするためにVisualTreeを使用しているときに、ブレークポイントがImage
ゲッターヒット内にあります。
ImageBox内で画像をどのように実装できますか?
がフラグプロパティと同じクラスで定義されたImageプロパティですか? – mm8