Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:禁用绑定项控件中的项_C#_Wpf_Itemscontrol_Stackpanel - Fatal编程技术网

C# 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

我正在使用以下内容制作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>

有没有办法一次只禁用一个条目?如何访问
电话条目
?我是否应该尝试根据绑定值禁用每个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不操纵视图。