- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 MVVM 时,我在如何连接互连的组合框方面遇到了一些困难。我有一个 DTO,它代表一个包含 CustomerId
的订单和 OrderTypeId
.然后将它们包裹在 OrderViewModel
中.我还有一个 EditOrderViewModel
它从数据库加载客户列表。
我想做的是从数据库加载一个订单(类似于加载函数)在组合框中选择正确的项目(项目源是一个列表,在文本 block 中显示所选客户的名称到最后在下一个组合框中加载属于该客户的 OrderType 列表,再次选择正确的 OrderType 并在右侧的 TextBlock 中显示 OrderTypeName。
当我从组合框中使用 SelectedItem 时,我已经设法使某些行为起作用,但这仅在我手动选择该项目时,因为我不确定如何在我的 View 模型中将 Order.CustomerId(类型 int)转换为正确的SelectedItem(类型 CustomerDTO)。下面是一些代码,一般显示了我在使用内存数据源时想要实现的目标。谢谢亚历克斯
<ComboBox Height="25" Width="150" ItemsSource="{Binding Path=Customers}" SelectedValue="{Binding Path=Order.CustomerId}" SelectedValuePath="Id">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Code}"></TextBlock>
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Text="{Binding Path=Name,Mode=OneWay,NotifyOnSourceUpdated=True}"></TextBlock>
public class EditOrderViewModel : VMBase
{
public OrderViewModel Order{get;set;}
public void Load()
{
Order = new OrderViewModel(new OrderDto{CustomerId=1,OrderTypeId=2});
Order.PropertyChanged += MainWindowViewModel_PropertyChanged;
}
public EditOrderViewModel()
{
Order = new OrderViewModel(new OrderDto());
Order.PropertyChanged += OrderViewModel_PropertyChanged;
Customers = new List<CustomerDto> {
new CustomerDto{ Id = 1, Code = "ACME", Name = "ACME CORP" },
new CustomerDto{ Id = 2, Code = "MSFT", Name="MICROSOFT CORP" },
new CustomerDto{ Id = 3, Code = "APP", Name = "APPLE" }};
OrderTypes = new List<OrderTypeDto>{
new OrderTypeDto{OrderTypeId=1, CustomerId =1, Name = "Cake Order"},
new OrderTypeDto{OrderTypeId=2, CustomerId =1, Name = "Sandwich Order"},
new OrderTypeDto{OrderTypeId=3, CustomerId =2, Name = "Chocolate Order"},
new OrderTypeDto{OrderTypeId=4, CustomerId =2, Name = "Bread Order"},
new OrderTypeDto{OrderTypeId=5, CustomerId =3, Name = "Drinks Order"}};
}
void OrderViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "OrderTypeId":
break;
case "SelectedCustomer":
break;
default:
break;
}
}
public List<OrderTypeDto> OrderTypes { get; set; }
public List<CustomerDto> Customers { get; set; }
}
public class OrderDto
{
public int CustomerId { get; set; }
public int OrderTypeId { get; set; }
}
public class CustomerDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
}
public class OrderViewModel : VMBase
{
private OrderDto _orderDto;
private string _customerName;
public OrderViewModel(OrderDto orderDto)
{
_orderDto = orderDto;
}
public int CustomerId {
get { return _orderDto.CustomerId; }
set
{
_orderDto.CustomerId = value;
RaisePropertyChanged("CustomerId");
}
}
public string CustomerName {
get { return _customerName; }
set {_customerName = value;
RaisePropertyChanged("CustomerName");
}
}
public int OrderTypeId
{
get { return _orderDto.OrderTypeId; }
set
{
_orderDto.OrderTypeId = value;
RaisePropertyChanged("OrderTypeId");
}
}
}
最佳答案
不要设置ComboBox.SelectedValue
在您的 XAML 绑定(bind)中。你应该绑定(bind)ComboBox.SelectedItem
到您的模型,以便您可以轻松使用 CustomDTO。您应该在 OrderViewModel 中添加一个名为 Customer
的属性。 (CustomerDTO 类型),而不是尝试使用多个属性(CustomerID、CustomerName 等)重新创建 CustomerDTO。
关于wpf - 关于 View 模型和互连组合框的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130113/
我正在尝试使用 Java8 中的流创建一个生产者多个消费者模型。我正在读取和处理来自数据库资源的数据,并且 我想以流方式处理它们(不能将整个资源读入内存)。 源的读取必须是单线程的(游标不是线程安全的
我需要通过 RESTful 接口(interface)连接到另一个系统的 API,该接口(interface)将通过 websocket 连接提供事件。 我正在使用一个 javascript 库来处理
我有以下要求。请提前为我提供一些帮助。 软件:-1.Unix2. Apache 2.03.tomcat 6.0.35 当前情况:-1.MOD_JK连接Apache和tomcat2.Tomcat有多个w
我尝试设置3个jquery ui slider 互连,3个 slider 的总和必须始终保持在100,因此当我更改一个 slider 的值时,其他 slider 必须更新。 例如,如果一个 slide
我正在尝试在 eth0(USB 调制解调器)和 wlan0(Wifi 热点)之间建立一座桥,或者将所有流量从 wlan0 路由到 eth0。 程序: 如果接口(interface)已经有IP,桥接将不
我已经用 Python 完成了计算理论概念的数学模拟编码,例如语法检查和其他内容。我的问题是我必须为它构建一个看起来像样的 GUI。 我看过 PyQt4,缺乏文档确实是一个很大的阻碍。我查看了 Pyt
考虑 PL (FPGA) 端的 AXI4 互连。 当我双击查看可用选项时,从属接口(interface)中有一个选项卡。包含以下选项。 启用寄存器片的目的是什么? outer指的是二级缓存吗? Aut
我在我的程序中与 JGraphT 的 JGraphXAdapter 可视化了关系. 不幸的是,我只需要允许用户对图形进行视觉修改,即移动/调整节点大小。但他仍然可以编辑一些东西,尽管我禁用了我发现的所
我正在尝试改进我的 UI 以将两个组合框相互链接。 我的 xml 文件包含: 我正在从 xml 文件中读取数据,并将所有 org_Id (4, 5) 放在一个 QStringList
我是一名优秀的程序员,十分优秀!