2017-05-31 76 views
0

在WPF中得到的对象,我有一个列表框绑定到数据集,它看起来像:如何从绑定源

<ListBox x:Name="lb_Configuration" SelectionMode="Extended" Height="100" ItemsSource="{Binding Products}" SelectedItem="{Binding SelectedProduct}"> 

的的SelectedItem有像许多对象:ID ...

我怎么能在后端代码中得到这个值?我的想法是:

int myid; 
myid = lb_Configuration.SelectedItem.<what method?> 

或其他方式来达到我的目的?谢谢。

+0

什么是_back结束code_?你的意思是你的UI的代码隐藏?这将是一种错误的方式,您必须在视图模型中管理数据,而不是在视图中。 – dymanoid

+0

感谢您的回复。我的意思是代码隐藏。但是'myid'不是UI视图对象,我只是想获得它的价值计算过程 –

+0

如果你写了一个绑定了'SelectedItem'属性为'SelectedProduct'财产,自然的问题是:哪里是'SelectedProduct财产?在xaml.cs中?在ViewModel中? –

回答

0

使用as运营商只投了SelectedItem属性的类型(Product或任何你的类被称为):

int myid; 
var item = lb_Configuration.SelectedItem as Product; 
if(item != null) 
    myid = item.Id; 

需要注意的是,因为你绑定SelectedItem属性设置为SelectedProduct财产在你的视图模型,你可以直接在视图模型类,但是访问SelectedProductId属性:

int myid; 
if(SelectedProduct != null) 
    myid = SelectedProduct.Id; 
+0

谢谢您的回答,对我来说工作正常。 –

-2

如果要访问它的后端代码,你可以做

myID = (lb_Configuration.SelectedItem as (Type of the object it is binded to)).ID; 

但它是很好的避免后面xaml.cs代码。如果你解释你实际想要达到的目标,我可以用MVVM的方式来帮助你。

+0

非常感谢。我已经写了一个'SelectedProduct'来从* xml *文件获得产品,并且每个'Product'在* xml *文件中都有很多对象,如:* id *,* name *,* value *,现在当我点击一个按钮,我需要从我的列表框中已经选择的'Product'中获得一个对象。希望我对你解释清楚。 –

+1

_“这是很好的避免xaml.cs代码”_不,它不是。这取决于你必须达到什么以及你的编程风格是什么。最佳做法是希望将所有逻辑放在ViewModels类中,并留在仅查看UI的东西中,但除此之外,您可以以任何您想要的方式处理View。 –

+0

我写的视图模型是这样的:'公共产品SelectedProduct { 得到{selectedProduct; } 设置 { 如果(selectedProduct =值!) { selectedProduct =值; NotifyPropertyChanged(); }} } ' –