在 ComboBox 中设置 SelectedItem
Set SelectedItem in a ComboBox
我试图在 ComboBox 中设置 SelectedItem,但没有成功。
如您在上面的屏幕截图中所见,它显示了产品列表中的第一条记录。
这是 XAML :
<ComboBox Grid.Column="1"
Grid.Row="0"
ItemsSource="{Binding Products}"
SelectedItem="{Binding SelectedProduct, Mode=TwoWay}"
IsSynchronizedWithCurrentItem="True"
IsEditable="True"
DisplayMemberPath="ProductName"
SelectedValuePath="Id"
Width="200"
Height="30"
VerticalContentAlignment="Center"
Margin="10 0 0 20" />
视图模型:
public Product SelectedProduct
{
get => _selectedProduct;
set => Set(ref _selectedProduct, value);
}
在这里我设置了 SelectedProduct :
private void OrderUserControl(Order order)
{
ShowOrderUserControl = Visibility.Visible;
Products = _productService.GetProducts();
if (order == null)
{
Order = new Order();
OrderUserControlTitle = "Nieuwe bestelling toevoegen";
}
else
{
Order = order;
SelectedProduct = _productService.GetProductById(Order.ProductId);
OrderUserControlTitle = "Bestelling aanpassen";
}
}
有什么想法吗?
假设您的 Product
class 有 Id
属性,
您可以像这样使用 linq 而不是再次使用您的服务来获得您的 SelectedProduct
:
SelectedProduct = Products.Find(p => p.Id == Order.ProductId);
它确保您选择的产品是您的Products
列表
的一部分
我试图在 ComboBox 中设置 SelectedItem,但没有成功。
如您在上面的屏幕截图中所见,它显示了产品列表中的第一条记录。
这是 XAML :
<ComboBox Grid.Column="1"
Grid.Row="0"
ItemsSource="{Binding Products}"
SelectedItem="{Binding SelectedProduct, Mode=TwoWay}"
IsSynchronizedWithCurrentItem="True"
IsEditable="True"
DisplayMemberPath="ProductName"
SelectedValuePath="Id"
Width="200"
Height="30"
VerticalContentAlignment="Center"
Margin="10 0 0 20" />
视图模型:
public Product SelectedProduct
{
get => _selectedProduct;
set => Set(ref _selectedProduct, value);
}
在这里我设置了 SelectedProduct :
private void OrderUserControl(Order order)
{
ShowOrderUserControl = Visibility.Visible;
Products = _productService.GetProducts();
if (order == null)
{
Order = new Order();
OrderUserControlTitle = "Nieuwe bestelling toevoegen";
}
else
{
Order = order;
SelectedProduct = _productService.GetProductById(Order.ProductId);
OrderUserControlTitle = "Bestelling aanpassen";
}
}
有什么想法吗?
假设您的 Product
class 有 Id
属性,
您可以像这样使用 linq 而不是再次使用您的服务来获得您的 SelectedProduct
:
SelectedProduct = Products.Find(p => p.Id == Order.ProductId);
它确保您选择的产品是您的Products
列表