C# WPF:禁用绑定项控件中的项
我正在使用以下内容制作WPF页面:C# WPF:禁用绑定项控件中的项,c#,wpf,itemscontrol,stackpanel,C#,Wpf,Itemscontrol,Stackpanel,我正在使用以下内容制作WPF页面: <ItemsControl ItemsSource="{Binding Peopl.PhoneNums}" x:Name="PhoneList"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <StackPanel Orientation="Horizontal" Margin="0,0,0,0" x:Name="Pho
<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>
有没有办法一次只禁用一个条目?如何访问
电话条目
?我是否应该尝试根据绑定值禁用每个stackpanel条目?您可以反转视图模型属性,并将其称为应启用。现在可以绑定StackPanel的IsEnabled
属性
<StackPanel ... IsEnabled="{Binding ShouldBeEnabled}">
...
</StackPanel>
...
如果无法更改视图模型,可以使用绑定转换器反转特性值:
<StackPanel ... IsEnabled="{Binding ShouldBeDisabled,
Converter={StaticResource InverseBooleanConverter}}">
...
</StackPanel>
...
您的Phone类必须实现INotifyPropertyChanged
接口,并在应禁用属性的值更改时触发PropertyChanged
事件。您可以反转视图模型属性并将其称为应启用属性。现在可以绑定StackPanel的IsEnabled
属性
<StackPanel ... IsEnabled="{Binding ShouldBeEnabled}">
...
</StackPanel>
...
如果无法更改视图模型,可以使用绑定转换器反转特性值:
<StackPanel ... IsEnabled="{Binding ShouldBeDisabled,
Converter={StaticResource InverseBooleanConverter}}">
...
</StackPanel>
...
您的Phone类必须实现INotifyPropertyChanged
接口,并在属性值应禁用时触发PropertyChanged
事件。不要在代码中这样做。每个PhoneEntry StackPanel的DataContext应该是您的手机项目。答案应该是将禁用属性绑定到ShouldBeDisabled。视图关注viewmodel,viewmodel不会操纵视图。不要在代码中这样做。每个PhoneEntry StackPanel的DataContext应该是您的手机项目。答案应该是将禁用属性绑定到ShouldBeDisabled。视图关注viewmodel,viewmodel不操纵视图。