由于您使用的标签绑定,我会去从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