UserControl的datagrid中下拉框绑定 BindableCollectionNoNeedDetails 中的 ObservableCollectionstring SelectPackage 值以WVVM模式实现请给出详细设计代码
以下是一个使用WVVM模式实现UserControl的datagrid中下拉框绑定的示例设计代码:
- 创建一个NoNeedDetails类,该类包含一个ObservableCollection
属性SelectPackage:
public class NoNeedDetails
{
public ObservableCollection<string> SelectPackage { get; set; }
public NoNeedDetails()
{
SelectPackage = new ObservableCollection<string>();
// 在构造函数中添加示例数据
SelectPackage.Add("Package1");
SelectPackage.Add("Package2");
SelectPackage.Add("Package3");
}
}
- 在ViewModel中创建一个BindableCollection
属性,并在构造函数中初始化该属性:
public class MainViewModel : Screen
{
public BindableCollection<NoNeedDetails> Items { get; set; }
public MainViewModel()
{
Items = new BindableCollection<NoNeedDetails>();
// 添加示例数据
Items.Add(new NoNeedDetails());
Items.Add(new NoNeedDetails());
Items.Add(new NoNeedDetails());
}
}
- 在UserControl的XAML中,绑定datagrid的ItemsSource和ComboBox的ItemsSource:
<UserControl x:Class="YourNamespace.YourUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="http://www.caliburnproject.org">
<Grid>
<DataGrid x:Name="Items" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Select Package">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding SelectPackage}"
SelectedItem="{Binding SelectedPackage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>
- 在UserControl的code-behind中,设置DataContext为ViewModel,并在构造函数中初始化ViewModel:
public partial class YourUserControl : UserControl
{
public YourUserControl()
{
InitializeComponent();
DataContext = new MainViewModel();
}
}
这样,NoNeedDetails类中的SelectPackage属性将被绑定到UserControl的datagrid中的下拉框中,并且可以通过WVVM模式来处理选中的值
原文地址: http://www.cveoy.top/t/topic/hXI0 著作权归作者所有。请勿转载和采集!