.net 初始启动时可见性绑定不起作用

.net 初始启动时可见性绑定不起作用,.net,wpf,xaml,.net,Wpf,Xaml,我的项目中有2个下拉式库控件。选择第一个下拉列表可以控制第二个下拉列表中显示的内容。我有几个类别,它们的可见性由所选项目的枚举控制 <RibbonGalleryCategory Header="Slice Attributes" Visibility="{Binding Path=MapModel.SelectedTypeKey, Mode=TwoWay, Converter={StaticResource EnumMatchToVisibilityConverter}, Converte

我的项目中有2个下拉式库控件。选择第一个下拉列表可以控制第二个下拉列表中显示的内容。我有几个类别,它们的可见性由所选项目的枚举控制

<RibbonGalleryCategory Header="Slice Attributes" Visibility="{Binding Path=MapModel.SelectedTypeKey, Mode=TwoWay, Converter={StaticResource EnumMatchToVisibilityConverter}, ConverterParameter={x:Static map1:TypeKey.Slice}}">

除了在初始启动时,这项工作正常。如果我按预期更改第一个下拉列表过滤器。它显示了初始启动时的所有内容,并且似乎忽略了基于第一个下拉列表的可见性。我使用的是MVVM,所以如果我能帮上忙的话,我宁愿不使用代码隐藏


您知道如何在初始启动时进行过滤吗?

您可以通过在加载ViewModel时模拟属性更改来实现这一点:

注意,您还必须调用通常由下拉列表更改事件驱动的任何方法

例如:

MapViewModel()
{
     // Do your loads first...        

     NotifyPropertyChange("SelectedTypeKey");
}

这在构造函数中似乎不起作用。我是否必须在实际加载完成事件触发时运行它?是的,您需要确保在通知之前先加载所有内容。将其视为更改下拉列表中的选定项,然后将其更改回第一项。@scottlafoy确保创建MV的视图在屏幕初始化后创建MV。仍然无法使其工作。我尝试过许多不同的方法。我现在正在尝试一个代码隐藏的解决方案,但我甚至不能让它工作。这应该是一个微不足道的问题。我已经花了一天的时间尝试我找到的一个又一个解决方案,但仍然没有运气。WPF真令人沮丧。