WPF Togglebutton Group - только одна кнопка, проверенная за раз [Duplicate]C#

Место общения программистов C#
Ответить
Anonymous
 WPF Togglebutton Group - только одна кнопка, проверенная за раз [Duplicate]

Сообщение Anonymous »

У меня есть элементконтроль в моем приложении WPF, которое отображает список ToggleButtons . Каждый ToggleButton представляет путь файла, и я хочу, чтобы только одна кнопка была выбрана за раз. Нажав кнопку, должна обновить свойство SelectedPath в моем ViewModel , гарантируя, что все другие кнопки не контролированы. Pre Class = "Lang-CS PrettyPrint-Override">

Код: Выделить всё

private string selectedPath;
public string SelectedPath
{
get => selectedPath;
set
{
if (selectedPath == value) return;
selectedPath = value;
NotifyPropertyChanged(nameof(SelectedPath));
}
}

public ICommand ApplicationToggleButtonFilterCommand { get; }
< /code>
 my togglebutton click Command < /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>
 my xaml < /h3>
























< /code>
 мой мультивальный конвертер < /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 };
}

}
}
проблема
Несмотря на то, что привязанность с многочисленным , который сравнивает path каждого буферизащика в SelectedPath , несколько Togglebuttons все еще можно выбрать одновременно.
Что я попробовал
ul>
Обновление SelectedPath в моей команде - гарантирует, что только один элемент хранится в SelectedPath , но пользовательский интерфейс по -прежнему позволяет нескольким ToggleButtons оставаться проверенным.
Возвращение binding.donothing in convertback - предотвращает ошибки, но не решает проблему. что каждая кнопка получает уникальный путь. < /li>
< /ul>
ожидаемое поведение < /h3>

Нажмите один Togglebutton должен проверить это и снять все остальные. > Как я могу обеспечить соблюдение этого только одного Togglebutton проверяется за раз?

Подробнее здесь: https://stackoverflow.com/questions/794 ... -at-a-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»