WPF 无法 select 启用 ComboBox 中的项目
WPF unable to select enabled item within ComboBox
我正在尝试创建一个 ComboBox,其中 selection 列表中的某些项目已启用,而其他项目已禁用。在视觉上,我能够做到这一点,但是当我 select 一个视觉上启用的项目时,没有任何反应。
XAML:
<ComboBox ItemsSource="{Binding EndpointModel.DisplayFormat}"
VerticalAlignment="Center" Margin="0,0,10,0"
SelectedItem="{Binding EndpointModel.SelectMediaFormat}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<ComboBoxItem>
<TextBlock Text="{Binding Name}" />
</ComboBoxItem>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
当我点击上面的 selected 项目时,没有任何反应 - EndpointModel.SelectMediaFormat 没有被执行。
当我删除 ComboBox.ItemTemplate 节时,我可以成功 select 任何启用的项目,即
<ComboBox ItemsSource="{Binding EndpointModel.DisplayFormat}"
VerticalAlignment="Center" Margin="0,0,10,0"
SelectedItem="{Binding EndpointModel.SelectMediaFormat}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
如您所见,我正在显示对象引用。我不知道如何用实际名称替换上面的内容。
正如您想象的那样,我对 WPF 还很陌生:-)
如有任何建议,我们将不胜感激。
尝试使用 DisplayMemberPath
属性 到 Name
(您要显示的 属性)。
<ComboBox ItemsSource="{Binding EndpointModel.DisplayFormat}"
VerticalAlignment="Center" Margin="0,0,10,0"
SelectedItem="{Binding EndpointModel.SelectMediaFormat}"
DisplayMemberPath="Name">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
我正在尝试创建一个 ComboBox,其中 selection 列表中的某些项目已启用,而其他项目已禁用。在视觉上,我能够做到这一点,但是当我 select 一个视觉上启用的项目时,没有任何反应。
XAML:
<ComboBox ItemsSource="{Binding EndpointModel.DisplayFormat}"
VerticalAlignment="Center" Margin="0,0,10,0"
SelectedItem="{Binding EndpointModel.SelectMediaFormat}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<ComboBoxItem>
<TextBlock Text="{Binding Name}" />
</ComboBoxItem>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
当我点击上面的 selected 项目时,没有任何反应 - EndpointModel.SelectMediaFormat 没有被执行。
当我删除 ComboBox.ItemTemplate 节时,我可以成功 select 任何启用的项目,即
<ComboBox ItemsSource="{Binding EndpointModel.DisplayFormat}"
VerticalAlignment="Center" Margin="0,0,10,0"
SelectedItem="{Binding EndpointModel.SelectMediaFormat}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
如您所见,我正在显示对象引用。我不知道如何用实际名称替换上面的内容。
正如您想象的那样,我对 WPF 还很陌生:-)
如有任何建议,我们将不胜感激。
尝试使用 DisplayMemberPath
属性 到 Name
(您要显示的 属性)。
<ComboBox ItemsSource="{Binding EndpointModel.DisplayFormat}"
VerticalAlignment="Center" Margin="0,0,10,0"
SelectedItem="{Binding EndpointModel.SelectMediaFormat}"
DisplayMemberPath="Name">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>