2013-07-09 5 views
1

У меня есть элемент управления ListView, который содержит только один столбец с флажками. Можно ли присвоить этим флажкам некоторые имена (индексы - как 1, 2, 3 ...)?Установите флажки в ListView

Мне нужно это, потому что я хочу определить конкретный флажок в ToggleButton_OnCheckedUnchecked события в некотором роде.

<GridViewColumn.CellTemplate> 
    <DataTemplate> 
     <CheckBox IsChecked="{Binding Value, Mode=OneWay}" IsThreeState="False" 
        Checked="ToggleButton_OnCheckedUnchecked" 
        Unchecked="ToggleButton_OnCheckedUnchecked"/> 
    </DataTemplate> 
</GridViewColumn.CellTemplate> 
+1

Вы хотите дать имена 'динамически'? –

+0

Да, точно :) – Nickon

+1

Зачем нужен флажок, когда у вас есть привязанное значение. работайте со значением, чтобы следовать за MVVM. если вы так. ? – JSJ

ответ

1

Не делайте этого. Вместо этого, каждая строка в вашем ListView имеет свойство IsChecked и меняет привязку IsChecked на TwoWay. Таким образом, вам не нужно использовать события Checked и UnChecked вообще.

public class LineViewModel 
{ 
    public bool IsChecked 
    { 
    get { return _isChecked; 
    } 
    set 
    { 
    // do something here 
    } 
} 

<GridViewColumn.CellTemplate> 
    <DataTemplate> 
     <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" IsThreeState="False"/> 
    </DataTemplate> 
</GridViewColumn.CellTemplate> 

Для достижения наилучших результатов внесите также INotifyPropertyChanged.

+0

Слишком много программирования ... Мне стыдно за себя: D Thx! – Nickon

1

Возможно динамическое связывание некоторые имена можно сделать через Binding, как это:

<CheckBox Name="{Binding IdCheckBox}" ... /> 

Цитата из MSDN:

Данные привязки Имя технически возможно, но крайне редко потому что связанное с данными имя не может служить основной назначенной цели свойства: предоставить точку соединения идентификатора для кода.

Короче говоря, свойство Binding Name для управления невозможно и нежелательно. Но вы можете использовать свойство прикрепленной зависимости, как это:

<CheckBox local:GiveName.Name="{Binding Template_Name1}" ... /> 

В любом случае, это не решение ваших проблем.

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