使用自定义 DataTemplate 时 WPF ComboBox IsEnable

WPF ComboBox IsEnable when using custom DataTemplate

这是以下内容。我想禁用组合框。

在 window 的某些情况下,我只是将 SelectedItemViewModel 设置为某些内容并且不允许用户更改它。但在某些情况下我想允许。

在 VM 中更改 ComboBoxIsEnabled 属性 时,这个效果很好。

<ComboBox ItemsSource="{Binding MyColletionView, Mode=OneWay}"
          SelectedItem="{Binding MySelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          DisplayMemberPath="Name"
          IsEnabled="{Binding MyComboBoxIsEnabled}"/>

更改 ComboBox.ItemTemplateIsEnable 属性 不再有反应。简而言之,我无法禁用 ComboBox.

<ComboBox ItemsSource="{Binding MyColletionView, Mode=OneWay}"
          SelectedItem="{Binding MySelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          IsEnabled="{Binding MyComboBoxIsEnabled}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource CustomerConverter}}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

我不想禁用 ComboBoxItem,我想禁用 ComboBox 本身。

有什么建议,或者有人面临同样的问题?

<ComboBox Height="20" Width="200" IsEnabled="True" Margin="38,38,1682,1022" ItemsSource="{Binding SourceData}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
</ComboBox>

我跟你一样写了个例子described.but我没用mvvm.I想证明IsEnable和ItemTemplate没有关系。 您可以从以下提示中追踪此问题。

  1. 在VisualStudio.There中观察输出window可能有一些异常。
  2. 用代码隐藏替换 mvvm 并尝试。