Wpf 在XAML中动态切换ItemsSource
我试图根据viewmodel中属性的值切换treeview的itemssource。我试过下面的代码,但触发器似乎没有触发,有人能告诉我哪里出错了吗Wpf 在XAML中动态切换ItemsSource,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我试图根据viewmodel中属性的值切换treeview的itemssource。我试过下面的代码,但触发器似乎没有触发,有人能告诉我哪里出错了吗 <Window.Resources> <Style x:Key="TreeViewItemSource" TargetType="TreeView"> <Style.Triggers> <DataTrigger Binding="{
<Window.Resources>
<Style x:Key="TreeViewItemSource" TargetType="TreeView">
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentReportRequested, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Value="TollFree">
<Setter Property="ItemsSource" Value="{Binding InsertTFSQueryList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<TreeView ItemsSource="{Binding Source={StaticResource TreeViewItemSource}, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource DebugConverter}}" />
以样式设置
项目资源
,否则本地设置值将始终保持优先级
在这里阅读更多关于它的信息-
最重要的是,您已经将ItemsSource设置为样式,并且在转换器的某个地方,您正在将其转换为实际值。这是我看过的最奇怪的东西。如何将样式转换为ItemsSource。重构逻辑并将两者分开,以便以上XAML适合您。为了解决我的问题,我使用了良好的旧oop…多态性
我在ViewModel中使用了多态结构。现在,我的ItemsSource被绑定到一个IEnumerable列表,其中包含基类…我可以将其等同于任何派生类型 谢谢你的回复,但它仍然不起作用。至于转换器,它根本不进行转换,我使用它来查看触发数据触发器时itemsSource的值。我已经将转换器从xaml中取出,但是它仍然不起作用。如何将样式资源用作TreeView的ItemSource?您需要将其绑定到
IEnumerable
集合。
<Style x:Key="TreeViewItemSource" TargetType="TreeView">
<!-- Set ItemsSource here but you need to separate Style out of it. -->
<Setter Property="ItemsSource"
Value="{Binding Source={StaticResource TreeViewItemSource},
UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource DebugConverter}}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentReportRequested, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
Value="TollFree">
<Setter Property="ItemsSource" Value="{Binding InsertTFSQueryList,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTrigger>
</Style.Triggers>
</Style>