c# - 可见性绑定(bind)到模板内的 ListboxItems

标签 c# wpf mvvm listbox datatemplate

我正在尝试更改 Visibility ListBoxItem 中的元素点击 CheckBoxListBox其中包含项目,但它似乎不起作用。

看起来绑定(bind)在 ListBoxItems 中不起作用.

我正在为我的项目使用模板

XAML

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

    <DataTemplate x:Key="ShotTemplate">
        <Grid x:Name="GridItem" Width="200">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <TextBox x:Name="ShotBox" Grid.Column="1" Text="{Binding Path=Description}" Visibility="{Binding EditMode, ElementName=EditMode, Converter={StaticResource BooleanToVisibilityConverter}}" />
            <TextBlock x:Name="ShotBlock" Grid.Column="1" Text="{Binding Path=Description}" Visibility="{Binding EditMode, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=False }" />                            
        </Grid>
    </DataTemplate>
</UserControl.Resources>

<Grid>

<ListBox Name="ShotList" ItemsSource="{Binding AllShotsCollection}" ItemTemplate="{StaticResource ShotTemplate}"/>

<CheckBox Name="EditMode" IsChecked="{Binding EditMode}" Content="Edit Mode" HorizontalAlignment="Left" Margin="12,30,0,0" VerticalAlignment="Top"/>

</Grid>

View 模型
private bool _editMode = true;
public bool EditMode
{
    get { return _editMode; }
    set { _editMode = value; RaisePropertyChanged("EditMode"); }
}

如何更改 ShotBoxShotBlock Visibility通过选中或取消选中 CheckBox .我知道转换器工作正常,这不是它必须与绑定(bind)有关的问题。

最佳答案

ElementName 绑定(bind)范围仅在模板内。我会在 ListView(不是 ListViewItem)上定义一个附加属性,并让 Checkbox 切换该属性。在 DataTemplate 中,您将能够使用 RelativeSource/FindAncestor 绑定(bind)来查找 ListView。

关于c# - 可见性绑定(bind)到模板内的 ListboxItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768870/

相关文章:

c# - 多线程奇点

javascript - 在 Asp.Net c# 中更新 gridview

wpf - 与 ElementName 绑定(bind)不起作用

c# - ViewModel 使用 MEF 实例化了两次

c# - 根据拼写距离按属性区分

C# 编译的 lambda 表达式实例创建和/或垃圾收集?

c# - 无法从方法组转换为 System.Func<string>

wpf - 在 wpf 中,我如何使数据网格适合窗口高度

c# - MVVM 列表框数据模板 SelectedItem

c# - 如何使用NHibernate实现“保存/放弃”功能?