我正在尝试在列表视图中显示属性。我的问题是我要显示的数据比我的ItemSource要深得多,它只应该只显示具有特定值的属性。
这是一个例子:
<ListView x:Name="listView"ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Tags.Data.Text}"/>
</GridView>
</ListView.View>
</ListView>
现在我想尝试制作这样的东西
namespace console\controllers;
use yii\console\Controller;
/**
* Job controller
*/
class JobController extends Controller {
public function actionIndex() {
echo "cron service runnning";
mail("mail@gmail.com","Cron",'Testing');
}
}
但是现在我希望它只显示一个带有特定ID的标签而不是所有标签。 而Items是一个ObservableCollection。
答案 0 :(得分:0)
我为你提出了两个解决方案。
1)看看是否有效:
<ListView x:Name="listView"ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Tags.Data.Text}"/>
</GridView>
</ListView.View>
</ListView>
如果这不起作用,让我们重构您的代码并使用WPF功能......
2)替代解决方案
在ViewModel中设置如下属性:
public Tag SelectedTag
{
get {...};
set
{
_selectedTag = value ;
SelectedData = value!=null?_selectedTag.Data:null;
//call notifypropertychanged here...
}
};
public Data SelectedData {get {...}; set {....}};
所以在你的ListView中,做一个像这样的绑定:
<ListView x:Name="listView"
ItemsSource="{Binding Items}"
SelectedItem={Binding SelectedTag, Mode=TwoWay, UpdateSourceTrigger="ProperyChanged">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=DataContext.SelectedData.Text,ElementName="YourWindowName"}"/>
</GridView>
</ListView.View>
</ListView>