Ich versuche, mehrere DataTriggers
auf meine Button
zu setzen. Ich habe etwas recherchiert und festgestellt, dass MultiDataTrigger
Ihnen erlaubt, dies zu tun. Ich möchte die Visibility
Eigenschaft meiner Button
auf false gesetzt werden, wenn die CCTVPath == string.Empty
ODER PermissionsFlag == false
. Das habe ich bisher;MultiDataTrigger mit OR anstelle von UND
<Button Grid.Column="3" x:Name="cctvFeedButton" Content="Live Feed"
Width="100" FontSize="16" HorizontalAlignment="Right" Margin="5" Click="OnCCTVButtonClick">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding CCTVPath}" Value=""/>
<Condition Binding="{Binding PermissionsFlag}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Hidden"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Und in meinem Code-Behind setze ich PermissionsFlag
so;
public bool PermissionsFlag { get; set; }
private void OnPageLoaded(object sender, RoutedEventArgs e)
{
PermissionsFlag = false;
}
Wie Sie PermissionsFlag
sehen kann, ist definitiv falsch, und die gibt es auf jeden Fall leer CCTVPath
jedoch die Button
nie versteckt. Was mache ich falsch?
UPDATE:
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private bool _permissionsFlag;
public bool Flag
{
get { return _permissionsFlag; }
set
{
_permissionsFlag = value;
OnPropertyChanged("PermissionsFlag");
}
}
private void OnPageLoaded(object sender, RoutedEventArgs e)
{
Flag = false;
CCTVImageCollection = GetImages();
imageListBox.ItemsSource = CCTVImageCollection;
DataContext = this;
}
In meiner XAML:
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding PermissionsFlag}" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
Vielen Dank für Ihre Zeit ASh. Wenn ich das tue, selbst wenn 'PermissionsFlag == false', wird der' Button' immer noch angezeigt, wenn ich erwarten würde, dass er unabhängig vom Wert von CCTVPath ausgeblendet wird. – CBreeze
Ich habe erwartet, dass etwas nicht stimmt, als würde ich den 'CCTVPath'' DataTrigger' entfernen, dann verhält es sich wieder nicht so, wie ich es möchte. Kann ich einfach eine Methode hinzufügen, oder benötigt ich eine ganz neue Klasse, um das Ereignis zu erhöhen? Hast du irgendwelche guten Beispiele zur Hand? – CBreeze
In der 'OnLoaded' Methode verwende ich' DataContext = this; '. 'PermissionsFlag' wird nur mit' public bool PermissionsFlag {get; einstellen; } ' – CBreeze