Guten Abend zusammen,
ich würde mich riesig über Hilfe bei einem Problem in sachen Binding freuen.
Es geht um das Binding einer Image-Source in einem Style. Ich würde gerne die Image über
das "MainWindow" setzen und finde aber keine wirkliche Hilfe die mir erklärt, wie ich außerhalb
des ContentPresenter etwas über das Binding setzen kann.
Zum besseren Verständnis, da ich keine Ahnung habe wie ich mich richtig ausdrücken soll, der Sytle:
<Style x:Key="RadioButtonMenu" TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Grid Name="MainBG" Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="32" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="6" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="16"/>
<RowDefinition Height="16"/>
<RowDefinition Height="16"/>
<RowDefinition Height="20"/>
<RowDefinition Height="12"/>
</Grid.RowDefinitions>
<Image Name="imgMenu" Grid.Column="3" Grid.ColumnSpan="1" Grid.Row="1" Grid.RowSpan="2" Source="{Binding Path=Source, RelativeSource={RelativeSource TemplatedParent}}"/>
<Grid Grid.Column="1" Grid.ColumnSpan="5" Grid.Row="3" Grid.RowSpan="1" Background="Transparent">
<ContentPresenter x:Name="contentPresenter"
Focusable="False"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<Grid Name="BarSelection" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="5" Background="Transparent"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="BarSelection" Property="Background" Value="#FF808D8F"/>
<Setter TargetName="MainBG" Property="Background" Value="#FF707A7C"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Es geht um die Image: Name="imgMenu". Der ContentPresenter soll einen Text anzeigen.
Das funktioniert auch recht gut. Nun würde ich gerne auch die "imgMenu" über den Aufrüf
im MainWindow setzen. Ca. so:
<RadioButton Content="Start"
Style="{StaticResource RadioButtonMenu}"
Source="/App;component/Resources/Icons/start.png"/>
Vielen Dank für etwaige Hilfe.
Ich glaube wenn du hier ein Attached Property verwendest ist das für dein Szenario der einfachste Weg ohne das Radiobutton Control selbst abzuleiten
https://dailydotnettips.com/how-to-create-an-attached-properties-in-wpf/
Vielen Dank. Das Schlagwort "Attached Property" hats gemacht. Hab immer unter falschen Schlagwörtern gesucht.