2013-07-09 37 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

爲什麼你需要複選框,而你有價值綁定。請使用Value解決MVVM問題。如果你是這樣。 ? – JSJ

回答

1

不這樣做。相反,讓ListView中的每行都有一個IsChecked屬性,並將IsChecked Binding更改爲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名稱屬性是不可能的和不希望的。但是你可以使用附加的依賴屬性,像這樣:

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

在任何情況下,這不是解決你的問題。