WPF:禁用有界 ItemsControl 中的项目
WPF: Disable items in bounded ItemsControl
我正在使用以下内容处理 WPF 页面:
<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>
可以有多个堆栈面板,每个都有一个唯一的 phone 编号;在代码隐藏中,每个 phone 数字都有一个标志,指示是否应启用它;我希望能够根据该标志启用堆栈面板中的每个条目,但我无法访问它....
我有:
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
?我应该尝试根据绑定值禁用每个堆栈面板条目吗?
您可以反转视图模型 属性 并将其命名为 ShouldBeEnabled
。现在您可以绑定 StackPanel 的 IsEnabled
属性.
<StackPanel ... IsEnabled="{Binding ShouldBeEnabled}">
...
</StackPanel>
如果您无法更改视图模型,您可以使用反转 属性 值的绑定转换器:
<StackPanel ... IsEnabled="{Binding ShouldBeDisabled,
Converter={StaticResource InverseBooleanConverter}}">
...
</StackPanel>
您的 Phone class 必须实现 INotifyPropertyChanged
接口并在 ShouldBeDisabled
[=25= 的值时触发 PropertyChanged
事件] 变化。
我正在使用以下内容处理 WPF 页面:
<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>
可以有多个堆栈面板,每个都有一个唯一的 phone 编号;在代码隐藏中,每个 phone 数字都有一个标志,指示是否应启用它;我希望能够根据该标志启用堆栈面板中的每个条目,但我无法访问它....
我有:
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
?我应该尝试根据绑定值禁用每个堆栈面板条目吗?
您可以反转视图模型 属性 并将其命名为 ShouldBeEnabled
。现在您可以绑定 StackPanel 的 IsEnabled
属性.
<StackPanel ... IsEnabled="{Binding ShouldBeEnabled}">
...
</StackPanel>
如果您无法更改视图模型,您可以使用反转 属性 值的绑定转换器:
<StackPanel ... IsEnabled="{Binding ShouldBeDisabled,
Converter={StaticResource InverseBooleanConverter}}">
...
</StackPanel>
您的 Phone class 必须实现 INotifyPropertyChanged
接口并在 ShouldBeDisabled
[=25= 的值时触发 PropertyChanged
事件] 变化。