WPF Togglebutton Group - только одна кнопка проверена за разC#

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

Сообщение Anonymous »

У меня есть элементконтроль в моем приложении WPF, которое отображает список ToggleButtons . Каждый ToggleButton представляет путь файла, и я хочу, чтобы только одна кнопка была выбрана за раз. Нажав кнопку, должна обновить свойство SelectedPath в моем ViewModel , гарантируя, что все остальные кнопки не выполнены. p>

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

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

public ICommand ApplicationToggleButtonFilterCommand { get; }
my togglebuttob click command

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

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;
}
}
}
my xaml my -multivelue converter

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

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 все еще можно выбрать одновременно. /> Обновление SelectedPath в моей команде - гарантирует, что только один элемент хранится в SelectedPath , но пользовательский интерфейс по -прежнему позволяет нескольким ToggleButtons оставаться проверенным.
returning binding.donothing in Convertback - предотвращает ошибки, но не решает проблему.
Обеспечение каждого Togglebutton < /code> связано с правильной точки зрения - проверена с помощью отладки, что каждая кнопка получает уникальный путь.
ожидаемое поведение
Щелкнирование One Toggebutton должен проверить это и снять все остальные.
Нажмите одну и ту же кнопку снова, чтобы снять ее. >
ожидаемое поведение < /strong>
нажимает один Togglebutton < /code> должен проверить его и снять все остальные. Br/> Как я могу применять только один ToggleButton проверяется за раз?

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

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

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

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

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

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