由於您使用的標籤綁定,我會去從DataTemplate中被描述的對象訪問subject_id。像這樣:
var subjectId = dataBoundItem.subject_id;
這是使用MVVM和綁定的正確方法。
UPDATE:
這裏是基本的MVVM的方法來解決這個問題。首先,我清理了一下你的列表框聲明,並增加了一個觸發器,設置IsSelected結合:
<ListBox ItemsSource="{Binding}">
<ListBox.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
</Style>
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Name="sp" Orientation="Horizontal" Margin="3,3,3,3" >
<CheckBox Name="chkSubject" IsChecked="{Binding IsSelected}" VerticalAlignment="Center" Margin="0,0,4,0" Unchecked="chkSubject_Unchecked_1">
<TextBlock FontSize="11" Text="{Binding SubjectName}" />
</CheckBox>
<Label Name="lbl_idOfSub" Content="{Binding SubjectId}" Visibility="Visible"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在這裏,每當IsSelected個人ListBoxItem的變化值,在「IsSelected」視圖模型的結合改變。這裏的模型:
public class SelectableItem : INotifyPropertyChanged
{
private string _subjectId;
private bool _isSelected;
private string _subjectName;
public string SubjectId
{
get { return _subjectId; }
set { _subjectId = value; OnPropertyChanged("SubjectId"); }
}
public bool IsSelected
{
get { return _isSelected; }
set { _isSelected = value; OnPropertyChanged("IsSelected"); }
}
public string SubjectName
{
get { return _subjectName; }
set { _subjectName = value; OnPropertyChanged("SubjectName"); }
}
// .. INotifyPropertyChangedImplementation
只要選擇相關項目是您的IsSelected將被設置爲真,假,只要它是不選。您可以將代碼放入「IsSelected」屬性的「set」項中,並檢查(value == false),並根據需要執行必要的代碼。這將是MVVM的方法。
使用的情況下,你可以做如下:
private void chkSubject_Unchecked_1(object sender, RoutedEventArgs e)
{
FrameworkElement control = sender as FrameworkElement;
if (control == null)
return;
SelectableItem item = control.DataContext as SelectableItem;
if (item == null)
return;
string yourValue = item.SubjectId;
}
我強烈建議你閱讀MVVM和綁定。
謝謝。 Byways wat你的意思是由dataBoundItem.can你請給我一個可行的解決方案我的問題因爲我堅持在這一點上。我想要的是複選框得到取消選中我想要的標籤中的值。 – rohit 2012-03-23 08:35:56
不客氣:) 發佈瞭解決方案的更新。 – 2012-03-23 19:02:45
謝謝德米特里爲你提供的幫助,這非常有用....肯定會閱讀它..... :) – rohit 2012-03-25 06:42:18