我正在尝试绑定我的列表VC_Functions
,它是我的组合框的StaticResource
。所选值应双向绑定到ComboBox所在的数据网格的ItemsSource的参数function_tid
。VC_Functions
定义为vc_double
的列表。
因此,从本质上讲,我试图从一个包含两个参数name
和desc
的列表中填充我的组合框。name
应该是下拉列表中显示的值,然后将其绑定到数据网格的ItemSource中的function_tid
的值。
我想它是SelectedValuePath、SelectedValue等的组合。但是我对WPF不太熟悉。
这就是我的XAML当前的样子:
<DataGridTemplateColumn Header="Function TID" Width="80*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding function_tid}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Height="22"
IsEditable="True"
IsTextSearchEnabled="True"
ItemsSource="{StaticResource VC_Functions}"
SelectedItem="{Binding name}"
DisplayMemberPath="name">
<ComboBox.ItemContainerStyle>
<Style>
<Setter Property="Control.ToolTip" Value="{Binding desc}"/>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
VC_Functions由VC_double:组成
public class vc_double
{
public string desc { get; set; }
public string name { get; set; }
public vc_double() { }
}
数据网格项目来源:
public class DataGridRows
{
public string function_tid { get; set; }
... etc
}
我想澄清的一件事是,ComboBox按预期从VC_Functions
填充正确的值,但每当选择其中一个值时,就会发生绑定错误,并且不会绑定到function_tid
所以我实际上找到了解决方案,而且它相对简单。
我更换了
SelectedItem="{Binding name}"
带有线路
SelectedValue="{Binding function_tid}"
SelectedValuePath="name"