use*_*678 3 .net c# data-binding wpf combobox
如何在wpf datagrid中绑定组合框(Itemssource和选定项)?我正在使用MVVM模式.我试过了
<DataGridTemplateColumn Header="Example 9">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem="{Binding PartId, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
和
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding MyCars}" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="Model" Binding="{Binding Model}"/>
<DataGridTextColumn Header="Registration" Binding="{Binding Registration}"/>
<DataGridTemplateColumn Header="Example 12">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding CarParts, RelativeSource={RelativeSource AncestorType=Window}}" DisplayMemberPath="PartName" SelectedValuePath="PartID" SelectedValue="{Binding PartId, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Selected" Binding="{Binding PartId}"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
用于数据绑定的属性
#region DataGrid List<String> Example
public ObservableCollection<MyCar> MyCars { get; set; }
public List<string> PartIds { get; set; }
#endregion
#region DataGrid List<Class> Example
public List<CarPart> CarParts { get; set; }
#endregion
Run Code Online (Sandbox Code Playgroud)
参考:http: //code.msdn.microsoft.com/windowsdesktop/Best-ComboBox-Tutorial-5cc27f82
小智 6
我尝试了很多选项,但我找到的最简单的选项是生成该组合框的加载事件并将其与列表或数据表绑定.
例如在Xaml
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox x:Name="cmbPayee" Loaded="cmbPayee_Loaded" Text="{Binding PayeeName, NotifyOnSourceUpdated=True,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedValue ="{Binding PayeeID, NotifyOnSourceUpdated=True,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath = "Payee1" SelectedValuePath="PayeeID"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
在.cs代码中
private void cmbPayee_Loaded(object sender, RoutedEventArgs e)
{
ComboBox cmb = (ComboBox)sender;
var res = from k in db.Payees
select k;
cmb.ItemsSource = res.ToList();
cmb.DisplayMemberPath = "Payee1";
cmb.SelectedValuePath = "PayeeID";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15584 次 |
| 最近记录: |