【发布时间】:2021-02-25 09:04:07
【问题描述】:
在我的 WPF 页面中,我想创建一个 ComboBox,其中第一项为空,第二项与属性值绑定,所以我这样做了:
<DataGrid x:Name="grdTmplBit" ColumnWidth="*" Style="{StaticResource DataGridStyle}" EnableColumnVirtualization="True" CanUserSortColumns="true" Margin="4,3,2,7" MaxHeight="930" SelectionMode="Extended" SelectionUnit="FullRow" ItemsSource="{Binding ElementName=ObjectsTree, Path=SelectedItem.InfosView, IsAsync=True}" >
<DataGrid.Columns>
<DataGridTemplateColumn Width="110" Header="COMM" Visibility="Visibile">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="90" SelectedValue="{Binding Comm.UnitName, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource workModeStyle}" SelectedValuePath="Content">
<ComboBoxItem Content="" />
<ComboBoxItem Content="{Binding Comm.UnitName}" />
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
属性UnitName 是string。请考虑ComboBox 在DataGridTemplateColumn 内。基本上第二项总是空的,如果我用TextBox 更改ComboBox,则值会正确显示。有什么帮助吗?
【问题讨论】:
-
看到
ComboBox没有其ItemsSource属性未绑定至少可以说是奇怪的。 -
没有ItemSource,因为元素应该直接在xaml中用ComboBoxItem定义
-
我认为您应该澄清您的问题,您希望用户选择
UnitName或null吗? -
两者,他可以在 UnitName(例如“Foobar”)或 null 之间进行选择。如果我直接将“Foobar”作为 Content 属性的值,它可以工作
-
"请考虑组合框位于 DataGridTemplateColumn 内。" - 请考虑创建minimal reproducible example