Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF绑定到Listview的Itemtemplate的可见性无效_Wpf_Listview_Mvvm_Visibility_Itemtemplate - Fatal编程技术网

WPF绑定到Listview的Itemtemplate的可见性无效

WPF绑定到Listview的Itemtemplate的可见性无效,wpf,listview,mvvm,visibility,itemtemplate,Wpf,Listview,Mvvm,Visibility,Itemtemplate,我正在使用WPF Prism.Mvvm。 我在侧面有一个导航栏,其中包含绑定到Itemssource的Listview。这些项目包含图像和内容。现在我的目标是折叠项目的内容,以便导航控件只显示图标 我已经定义了一个可见性绑定,在我的Listview之外的一些图像上使用它,效果非常好。但是,只要我尝试对Listview的itemtemplate中的任何内容使用该精确绑定,就什么也没有发生。 有趣的是,如果我将可见性设置为在没有绑定的情况下折叠自己,它会再次工作 这是我的看法 <UserCon

我正在使用WPF Prism.Mvvm。 我在侧面有一个导航栏,其中包含绑定到Itemssource的Listview。这些项目包含图像和内容。现在我的目标是折叠项目的内容,以便导航控件只显示图标

我已经定义了一个可见性绑定,在我的Listview之外的一些图像上使用它,效果非常好。但是,只要我尝试对Listview的itemtemplate中的任何内容使用该精确绑定,就什么也没有发生。 有趣的是,如果我将可见性设置为在没有绑定的情况下折叠自己,它会再次工作

这是我的看法

<UserControl.Resources>
    <ResourceDictionary>
        <BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
    </ResourceDictionary>

ListView.ItemTemplate是MenuItem对象的模板。我假设
可见性
不是MenuItem类的属性,它属于另一个视图模型。因此,您需要从不同的DataContext绑定它:

<TextBlock Visibility="{Binding DataContext.Visibility, 
                                Converter={StaticResource booleanToVisibilityConverter}, 
                                RelativeSource={RelativeSource AncestorType=ListView}}" 
           VerticalAlignment="Center" 
           Margin="10,10,10,10" Grid.Column="1" 
           Text="{Binding Content}" 
           Background="Transparent" 
           FontFamily="Arial" 
           FontWeight="Bold" />

private static bool _expanded = true;

private bool _visibility = _expanded;

public bool Visibility
{
    get { return _visibility; }
    set { SetProperty(ref _visibility, value); }
}


    private void ExpandMenu()
    {
        _expanded = !_expanded;
        Visibility = _expanded;
    }
<TextBlock Visibility="{Binding DataContext.Visibility, 
                                Converter={StaticResource booleanToVisibilityConverter}, 
                                RelativeSource={RelativeSource AncestorType=ListView}}" 
           VerticalAlignment="Center" 
           Margin="10,10,10,10" Grid.Column="1" 
           Text="{Binding Content}" 
           Background="Transparent" 
           FontFamily="Arial" 
           FontWeight="Bold" />