Hi,
in meinem Projekt möchte ich einen Button Enablen/Disabeln, dazu habe ich ein Property im ViewModel
Vorab, ich nutze die RelayCommand Klasse von @Nofear23m samt PropertyObserver und PropertyObserverNode (ViewModel Projekt ist .NetStandard).
Der Command:
Die beiden Properties um die es geht:
die Initialisierung des Command:
Das Binding im UserControl:
Dazu noch der Style, hier ist ein Trigger für "IsEnabled = False"
Wenn ich nun das Programm starte, ist der Button Disabled das ist correct, da TabPages = 0 ist.
Wenn ich dann eine TabPage hinzufüge ist der Button leider immernoch disabled, TabPages.Count ist dann aber 1 und CanCloseAllTabPages ist true.
Hab ich da beim Binding irgendwas vergessen?
P.S. vielleciht noch als RandInfo, ich nutze das NugetPaket FoodyWeaver, welches alle Properties, die INotifyPropertyChanged implementieren überwacht und beim Kompilieren dann OnPropertyChanged in den Setter hinzufügt.
in meinem Projekt möchte ich einen Button Enablen/Disabeln, dazu habe ich ein Property im ViewModel
CanCloseAllTabPages
welches nur zurück gibt, ob die ObservableCollection.Count > 0 ist.Vorab, ich nutze die RelayCommand Klasse von @Nofear23m samt PropertyObserver und PropertyObserverNode (ViewModel Projekt ist .NetStandard).
Der Command:
Die beiden Properties um die es geht:
die Initialisierung des Command:
Das Binding im UserControl:
Dazu noch der Style, hier ist ein Trigger für "IsEnabled = False"
XML-Quellcode
- <Style x:Key="HeaderIconButton" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseStyle}">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="Foreground" Value="{StaticResource ForegroundDefaultBrush}"/>
- <Setter Property="BorderThickness" Value="0"/>
- <Setter Property="FontSize" Value="{StaticResource FontSizeXXLarge}"/>
- <Setter Property="FontFamily" Value="{StaticResource FontAwesome2}"/>
- <Setter Property="Padding" Value="25"/>
- <Setter Property="Margin" Value="0 "/>
- <Setter Property="Width" Value="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type ButtonBase}">
- <Border x:Name="border"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Background="{TemplateBinding Background}"
- SnapsToDevicePixels="True">
- <Grid>
- <Viewbox>
- <TextBlock x:Name="text" Text="{TemplateBinding Content}"
- Focusable="False"
- FontFamily="{TemplateBinding FontFamily}"
- HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
- Margin="{TemplateBinding Padding}"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
- VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Viewbox>
- </Grid>
- </Border>
- <ControlTemplate.Triggers>
- <EventTrigger RoutedEvent="MouseEnter">
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation To="{StaticResource CharLightBlue}" Duration="0:0:0.3" Storyboard.TargetName="text" Storyboard.TargetProperty="Foreground.Color"/>
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger>
- <EventTrigger RoutedEvent="MouseLeave">
- <BeginStoryboard>
- <Storyboard>
- <ColorAnimation To="{StaticResource DefaultMain}" Duration="0:0:0.3" Storyboard.TargetName="text" Storyboard.TargetProperty="Foreground.Color"/>
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger>
- <Trigger Property="IsEnabled" Value="False">
- <Setter Property="Background" TargetName="border" Value="Transparent"/>
- <Setter Property="Foreground" TargetName="text" Value="{StaticResource ForegroundLightBrush}"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
Wenn ich nun das Programm starte, ist der Button Disabled das ist correct, da TabPages = 0 ist.
Wenn ich dann eine TabPage hinzufüge ist der Button leider immernoch disabled, TabPages.Count ist dann aber 1 und CanCloseAllTabPages ist true.
Hab ich da beim Binding irgendwas vergessen?
P.S. vielleciht noch als RandInfo, ich nutze das NugetPaket FoodyWeaver, welches alle Properties, die INotifyPropertyChanged implementieren überwacht und beim Kompilieren dann OnPropertyChanged in den Setter hinzufügt.
"Hier könnte Ihre Werbung stehen..."