Friday, June 22, 2018

xaml basics (Binding ...)

Element.Eigenschaftsschreibweise

normalerweise werden Attribute (Eigenschaften) als String angegebeen:
<Button Width="100" Background="blue"> (parser creiert Button und setzt dessen Background Eigenschaft vom Typ Brush auf einen Solid...Brush den er aus einem StringToColorConverter erzeugt)

<Button Width="100">
<Button.Background>
<LinearGradientBrush>
<GradientStop Color="RoyalBlue" Offset="0.0" />
<GradientStop Color="White" Offset="1.0" />
</LinearGradientBrush>
</Button.Background>
</Button>

Markup Erweiterungen

system.Windows.Data.Binding, StaticResource, DynamicResource x

Binding:

Quellen: DataContext, Source, RelativSource, Elementname

Default mäßig genügt es eine Eigenschaft des Datacontextes anzugeben (und damit aufs Viewmodel=Datacontext zu binden, dieses wird solange im Baum aufwärts gesucht bis irgendein DataContext gefunden wird):

{Binding MyDatacontextProperty}

 - es ist aber auch möglich auf Eigenschaften von GUI Elemente zu binden mittels der Eigenschaft Elementname:
Text="{Binding MyText, ElementName=MyUserControl}"

<Binding Path ="Foreground" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=UserControl}"/>

Parent: {RelativeSource AncestorType=ContentControl}

multiBinding:



                            <TextBlock.Foreground>
                                <MultiBinding Converter="{StaticResource ColorStringToBrush}">
                                    <Binding Path="FgColor" />
                                    <Binding Path ="Foreground, Elementname=Root"/>
                                </MultiBinding>
                            </TextBlock.Foreground>


Default Brushes:


_textbox.SystemColors.WindowTextBrush

_textbox.Background = SystemColors.WindowBrush;

No comments: