Code: Select all
private string selectedPath;
public string SelectedPath
{
get => selectedPath;
set
{
if (selectedPath == value) return;
selectedPath = value;
NotifyPropertyChanged(nameof(SelectedPath));
}
}
public ICommand ApplicationToggleButtonFilterCommand { get; }
< /code>
Mein ToggleButton-Klick-Befehl < /h3>
private void SetSelectedPath(object parameter)
{
if (parameter is ClipboardItem item)
{
// If the same item is clicked again, unselect it
if (SelectedPath == item.Path)
{
SelectedPath = null; // Deselect everything
}
else
{
SelectedPath = item.Path;
}
}
}
< /code>
Mein XAML < /h3>
< /code>
Mein Multivalu-Konverter < /h3>
using System;
using System.Globalization;
using System.Windows.Data;
using ClipKeeper.Source.MVVM.Model;
namespace ClipKeeper.Source.Convertors
{
public class ToggleButtonSelectedApplicationConverter: IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length != 2) return false; // Must have two values.
var item = values[0] as ClipboardItem;
var selectedPath = values[1] as string;
if (item == null || selectedPath == null) return false;
return item.Path == selectedPath;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
return new object[] { Binding.DoNothing, Binding.DoNothing };
}
}
}
Trotz der Bindung von ISCECKED an einen Multibinding , der den Pfad von jedem ClipboardItem In den SelectedPath kann mehrere ToggleButtons gleichzeitig ausgewählt werden. ul>
Aktualisieren von SelectedPath In meinem Befehl stellt sicher, dass nur ein Element in SelectedPath gespeichert ist. Die Benutzeroberfläche ermöglicht jedoch immer noch mehrere ToggleButtons überprüft.
Rückgabebindung. Diese Taste empfängt einen eindeutigen Pfad. sollte es überprüfen und alle anderen deaktivieren. > Wie kann ich durchsetzen, dass nur ein ToggleButton gleichzeitig überprüft wird?