小编vmo*_*ore的帖子

在wpf中禁止/阻止选择禁用的组合框项目

我正在编写一个应用程序,其中我想禁用其中的几个项目,ComboBox并且还想禁止/阻止选择禁用的项目.请注意,主窗口中的ComboBox有另一个ComboBox作为ComboBox项目初始化(由运行时由数据模板选择器决定).

使用下面的代码我可以在ComboBox中禁用ComboBox,但它不会阻止用户选择禁用的ComboBox项.禁止/阻止选择禁用物品的任何帮助都会有所帮助.

以下是代码段

主窗口中的ComboBox:

<Grid>
    <ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" 
              Width="120" Margin="87.2,44.8,0,0" 
              ItemsSource="{Binding Cars}" 
              ItemsPanel="{DynamicResource ItemsPanelTemplateHorizontal}"
              ItemTemplateSelector="{StaticResource QualityComboBoxTemplateSelector}"
              SelectedItem="{Binding SelectedItm}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

数据模板选择器:

public class QualityComboBoxTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        var element = container as FrameworkElement;

        var dataTemplate = element.FindResource(((item is string) && item.Equals("Ferrari")) ?
                                                       "DataTemplateTopLevelCombobox2" : "DataTemplateTopLevelCombobox1") as DataTemplate;

        return dataTemplate;
    }
}
Run Code Online (Sandbox Code Playgroud)

以上ComboBox的数据模板:

<DataTemplate x:Key="DataTemplateTopLevelCombobox1">
    <Border BorderBrush="Black" BorderThickness="1" >
        <TextBlock HorizontalAlignment="Left" 
                   TextWrapping="Wrap" Text="{Binding}"     
                   VerticalAlignment="Top"/>
    </Border>
</DataTemplate>

<DataTemplate x:Key="DataTemplateTopLevelCombobox2">
    <Border Width="100">
        <ComboBox Text="Custom" …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf combobox mvvm

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

combobox ×1

mvvm ×1

wpf ×1