На самом деле, это не проблема Binding или WPF.Это вопрос шаблона проектирования.
Решение
Определите List
или Dictionary
для хранения ваших объектов на всех вкладках, а затем вы можете выбрать каждый объект, используя индекс вместоДублированный регистр переключателя.
Например, вы можете определить Dictionary
с помощью клавиши TabIndex
и связанного объекта.
private Dictionary<int, (string name, object value)> _tabObjectDictionary = new Dictionary<int, (string, object)>
{
{ 1, ("First", object1) },
{ 2, ("Second", object2) },
{ 3, ("Third", object3) },
};
Или вы можете просто вывести индекс с помощьюsingle List
index.
private List<(string name, object value)> _tabObjectList = new List<(string, object)>
{
("First", object1),
("Second", object2),
("Third", object3),
};
Затем вы можете получить объект с помощью индекса.
public RelayCommandWithCannotExecuteReason Copy
{
get
{
if (_copy == null)
{
_copy = new RelayCommandWithCannotExecuteReason(
x =>
{
var (name, value) = _tabObjectDictionary[SelectedTabIndex];
Clipboard.SetData(name, value);
}, x =>
{
var (name, value) = _tabObjectDictionary[SelectedTabIndex];
// Verify your conditions here.
return value != null;
});
}
return _copy;
}
}
Советы: вам может потребоваться установить пакет NuGet с именем System.ValueTuple