TreeView连接到MVVM中的多可见性(ContentControl/ListView/等)



我有一个TreeView连接到ListView和ContentControl。当我们单击节点时,会将"可见性"设置为"隐藏"或"可见"。我已经编写了代码,它正在工作,但它在MVVM上,所以我想转换它,我不知道如何转换。

代码我已经:

private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            String tmp = ((TreeViewItem)e.NewValue).Header.ToString();
            Console.Write(tmp);
            if (tmp == "Lecteur")
            {
                Console.Write("Lecteurn");
                MediaPlayer.Visibility = Visibility.Visible;
                Bibliotheque.Visibility = Visibility.Hidden;
            }
            else if (tmp == "Bibliotheque")
            {
                Console.Write("Bibliothequen");
                MediaPlayer.Visibility = Visibility.Hidden;
                Bibliotheque.Visibility = Visibility.Visible;
            }
        }

如果你有一个想法,绑定ContentControl/ListView或其他的所有Visibility。。。

这可以在UI中使用触发器完成,您不需要在代码绑定或ViewModel 中使用任何额外的逻辑

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TreeView Grid.Row="0" x:Name="TrV">
        <TreeViewItem Header="Lecteur"/>
        <TreeViewItem Header="Bibliotheque"/>                   
    </TreeView>
    <ListView Grid.Row="1">
        <ListView.Style>
            <Style TargetType="ListView">
                <Setter Property="Visibility" Value="Visible"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=TrV,Path=SelectedItem.Header}">
                        <DataTrigger.Value>
                            <system:String>Lecteur</system:String>
                        </DataTrigger.Value>
                        <Setter Property="Visibility" Value="Hidden"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.Style>
        <ListViewItem Content="Lv_One"/>
        <ListViewItem Content="Lv_Two"/>
        <ListViewItem Content="Lv_Three"/>
    </ListView>
    <MediaElement Grid.Row="2" >
        <MediaElement.Style>
            <Style TargetType="MediaElement">
                <Setter Property="Visibility" Value="Visible"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=TrV,Path=SelectedItem.Header}">
                        <DataTrigger.Value>
                            <system:String>Bibliotheque</system:String>
                        </DataTrigger.Value>
                        <Setter Property="Visibility" Value="Hidden"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </MediaElement.Style>
    </MediaElement>       
</Grid>

最新更新