テキストボックスに画像を表示するためのテンプレートを実装しましたが、画像を動的に表示できないという問題がありました。ここに私のコードはここwpfのテキストボックステンプレートに画像を動的に割り当て
Window.xaml
<TextBox Style="{StaticResource imageTextBox}" />
である私のテキストボックステンプレートは、あなたが<Image.Source>
プロパティに{Binding}
を使用することができます
<Style TargetType="Control" x:Key="imageTextBox">
<Setter Property="Margin" Value="0,0,0,8"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Control">
<Border x:Name="bg" BorderThickness="1" CornerRadius="3" BorderBrush="Gray">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Style="{DynamicResource BasicTextBox}" Grid.Column="1"
Foreground="{TemplateBinding Foreground}"
Background="{TemplateBinding Background}"
FontFamily="{TemplateBinding FontFamily}"
FontSize="{TemplateBinding FontSize}"
FontWeight="{TemplateBinding FontWeight}"
MinWidth="340" Margin="1" />
<Image Source="Images/img_1.gif" Width="20"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" TargetName="bg" Value="Black"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" TargetName="bg" Value="Black"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="BasicTextBox" TargetType="{x:Type TextBox}">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
あなたは*動的に画像を表示できません*で何を意味するのですか? – lokusking
スタイルでは静的なパスをImage要素に割り当てていましたので、windows.xamlのテキストボックスにキーを割り当てるたびに、すべてのテキストボックスに単一のイメージが表示されます。異なるテキストボックスに対しては別のイメージを表示する必要があります。どのように実装することができますか? –
カスタムコントロールのプロパティを追加し、イメージソースにバインドします。 – ViVi