我正在尝试更改 Visibility
ListBoxItem
中的元素点击 CheckBox
外ListBox
其中包含项目,但它似乎不起作用。
看起来绑定(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"); }
}
如何更改
ShotBox
和 ShotBlock
Visibility
通过选中或取消选中 CheckBox
.我知道转换器工作正常,这不是它必须与绑定(bind)有关的问题。
最佳答案
ElementName 绑定(bind)范围仅在模板内。我会在 ListView(不是 ListViewItem)上定义一个附加属性,并让 Checkbox 切换该属性。在 DataTemplate 中,您将能够使用 RelativeSource/FindAncestor 绑定(bind)来查找 ListView。
关于c# - 可见性绑定(bind)到模板内的 ListboxItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768870/