WPF:为什么我的 ComboBox SelectedItem 不显示?
WPF: Why doesn't my ComboBox SelectedItem show?
(此问题已更新)
我有:
- Window1 -
DataGrid
- Window2 - 我在其中创建新的
DataGrid
行
- Window3 - 我在其中打开
DataGrid
行作为配置文件以查看其
内容
我的问题:
当我打开 Window3 时,ComboBox 不显示我在 Window2 中选择的项目
Window2中的ComboBox是这样绑定的:
<ComboBox
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>
我更愿意保持这样,而不是在项目中进行硬编码,因为它们可能不会再有了。
当我保存它时,我转到 Window1,然后打开我刚保存的行。
DataGrid
SelectedItem
受 属性 约束(命名为“Selected”),它绑定到 Window3 中的每个对象(几个 TextBoxes - 这些工作正常,一个 ComboBox - 确实不行!)。 ComboBox 存储了我需要的数据,但没有将我之前的选择显示为 SelectedItem
.
Window3中的ComboBox是这样绑定的:
<ComboBox
DataContext="{Binding Path=(viewmodel:LicenseHolderViewModel.Selected)}"
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>
因此,项目显示在 ComboBox 中,但默认情况下未选择任何内容。
如果我从 XAML 中删除 ComboBoxItem
,则 ComboBox 只是空的(自然地)。
我尝试添加 ItemsSource="{Binding PropertyName}"
(..a shot in the dark),这只是添加了一个项目,分为三个(E,P,F),但其中 none 设置为 SelectedItem
.
可能值得注意的是,我的框架会自动将视图与视图模型耦合,而我必须将另一个 ViewModels 属性 设置为每个对象 DataContext,这可能会导致一些问题? (我尝试对此进行测试,但我无法确认是否是这种情况)。
你有SelectedItem="{Binding PropertyName}">
但是 SelectedItem 的类型是 ComboBoxItem。
你想要SelectedValue="{Binding PropertyName}">
您可以改为绑定到 ComboBox.Text:
Text="{Binding PropertyName, Mode=OneWayToSource}" >
您应该将所选 ComboBoxItem
的 Content
绑定到源 属性。为此,您应该将 SelectedValue
属性 绑定到 SelectedValuePath
属性:
<ComboBox
SelectedValue="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Content">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>
(此问题已更新)
我有:
- Window1 -
DataGrid
- Window2 - 我在其中创建新的
DataGrid
行 - Window3 - 我在其中打开
DataGrid
行作为配置文件以查看其 内容
我的问题:
当我打开 Window3 时,ComboBox 不显示我在 Window2 中选择的项目
Window2中的ComboBox是这样绑定的:
<ComboBox
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>
我更愿意保持这样,而不是在项目中进行硬编码,因为它们可能不会再有了。
当我保存它时,我转到 Window1,然后打开我刚保存的行。
DataGrid
SelectedItem
受 属性 约束(命名为“Selected”),它绑定到 Window3 中的每个对象(几个 TextBoxes - 这些工作正常,一个 ComboBox - 确实不行!)。 ComboBox 存储了我需要的数据,但没有将我之前的选择显示为 SelectedItem
.
Window3中的ComboBox是这样绑定的:
<ComboBox
DataContext="{Binding Path=(viewmodel:LicenseHolderViewModel.Selected)}"
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>
因此,项目显示在 ComboBox 中,但默认情况下未选择任何内容。
如果我从 XAML 中删除 ComboBoxItem
,则 ComboBox 只是空的(自然地)。
我尝试添加 ItemsSource="{Binding PropertyName}"
(..a shot in the dark),这只是添加了一个项目,分为三个(E,P,F),但其中 none 设置为 SelectedItem
.
可能值得注意的是,我的框架会自动将视图与视图模型耦合,而我必须将另一个 ViewModels 属性 设置为每个对象 DataContext,这可能会导致一些问题? (我尝试对此进行测试,但我无法确认是否是这种情况)。
你有SelectedItem="{Binding PropertyName}">
但是 SelectedItem 的类型是 ComboBoxItem。
你想要SelectedValue="{Binding PropertyName}">
您可以改为绑定到 ComboBox.Text:
Text="{Binding PropertyName, Mode=OneWayToSource}" >
您应该将所选 ComboBoxItem
的 Content
绑定到源 属性。为此,您应该将 SelectedValue
属性 绑定到 SelectedValuePath
属性:
<ComboBox
SelectedValue="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Content">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>