1
我正在一个WPF页面上有以下几点:WPF:在禁用物品界的ItemsControl
<ItemsControl ItemsSource="{Binding Peopl.PhoneNums}" x:Name="PhoneList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0" x:Name="PhoneEntry">
<TextBlock Text="123-456-78901"/>
<ComboBox ...>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
可以有多个stackpanels,每一个独特的电话号码;在后面的代码中,每个电话号码都有一个指示是否应该启用的标志;我希望能够以启用基于该标记堆栈面板中的每个条目,但我被困在访问它....
我:
foreach (Phone phone in PhoneList.ItemsSource)
{
if (phone.ShouldBeDisabled)
{
int index = PhoneList.Items.IndexOf(phone);
PhoneList.IsEnabled = false;
//this disables the entire control;
// I can't access "PhoneEntry" here... hmm
}
}
有没有一种方法来禁用只有一个一次进入?我怎样才能访问PhoneEntry
?我应该尝试根据绑定值禁用每个堆栈面板条目吗?
不要在代码中这样做。每个PhoneEntry StackPanel的DataContext都应该是您的Phone项目。将您的禁用属性绑定到ShouldBeDisabled应该是答案。视图关注视图模型,视图模型不操纵视图。 – 2015-02-05 17:01:20