2014-08-07 5 views
0

Я хочу привязываться к Items.IndexOf (tbXy).Связывание с TabControl Items.IndexOf (tbXy) в XAML

В C# можно легко получить доступ к IndexOf:

tbControl.Items.IndexOf(tbXy) 

но в XAML? Я попытался это:

Value="{Binding Path=Items.IndexOf(tbxY)}" 

Я также нашел это предложения с помощью преобразователей:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/139bed8b-8eb0-4aec-a9c0-521bd7bede91/determining-index-of-a-tabitem?forum=wpf

Любые предложения, чтобы сделать это простое связывание непосредственно?

+0

вы не можете этого сделать. Для чего вам это нужно? –

+1

Вы не можете привязываться к методу по умолчанию, однако там [есть] (http://stackoverflow.com/q/502250/302677) [обходные пути] (http://stackoverflow.com/q/19980612/302677) если вам это действительно нужно. Тем не менее, что вы пытаетесь сделать? Вероятно, есть намного лучший способ выполнить задачу с использованием системы привязки WPF. – Rachel

+0

@HighCore: У меня есть TabControl с одним TabItem, который должен быть видимым при нажатии кнопки (выполняется в XAML) и получать фокус (isSelected). Вместо непосредственного использования TabIndex (например, 3) он должен быть независимым, насколько это возможно. – benba

ответ

0

Разве не имело бы смысла толкнуть эту логику в ViewModel? Если tbxY - это элемент, который известен в коде, вы не могли бы просто создать свойство в ViewModel под названием «SelectedItem», а затем связать в другом месте?

Вы можете сделать довольно приятные вещи с помощью DataTemplates, которые действительно позволят вам делать то, что вы хотите, с фактическим элементом, как только вы привязаны к нему.

+0

Моя цель - иметь как можно больше дополнительного кода в ViewModel. Кроме того, «x: Name» этого TabItem является View specific, и ViewModel не должен ничего знать о представлении ... – benba

+0

Возможно, я что-то пропустил, но ... почему вам нужно привязываться к x: Name - это должно быть неуместно. Да, это будет немного уродливо, если вы привязаны к TabItem, а не к классу, который должен быть BOUND для TabItem, но просто сделать DataBinding объектом в ViewModel позволит вам получить то, что вы хотите. Вы не должны бояться вставлять дополнительный код в режим просмотра. Это цель ViewModel. – Locke

Смежные вопросы