是否可以隐藏复选框,但保持其内容可见?
<ListBox
ItemsSource ="{Binding MyItemCollection}"
SelectionMode="Single"
Width="300"
Height="320">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsChecked}">
<CheckBox.Content>
<TextBlock Text="{Binding Item.Code}"/>
</CheckBox.Content>
</CheckBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<StackPanel>
<CheckBox Content="Edit Mode"
IsChecked="{Binding Path=EditModeSelected, Mode=TwoWay}">
</CheckBox>
</StackPanel>
我想在关闭编辑模式时隐藏列表框中的复选框(因此它应绑定到EditModeSelected),但文本应保持可见。
答案 0 :(得分:1)
我想到了3种可能的解决方案 - 其中两种或多或少是“黑客”,一种或多或少的清洁解决方案:
答案 1 :(得分:0)
为此,您可以保留两个TextBlock。在编辑模式下,可见CheckBox并隐藏TextBlock,而在读取器模式中则相反。我希望这可能有所帮助。由于DataTemplate在这里只有一个孩子,因此修复
创建如下所示的窗口资源。创建了两个数据模板,一个用于编辑模式,另一个用于读者模式。
<Window.Resources>
<DataTemplate x:Key="EditModeTemplate">
<CheckBox IsChecked="{Binding IsChecked}">
<CheckBox.Content>
<TextBlock Text="{Binding Item.Code}"/>
</CheckBox.Content>
</CheckBox>
</DataTemplate>
<DataTemplate x:Key="ReaderModeTemplate">
<TextBlock Text="{Binding Item.Code}"/>
</DataTemplate>
</Window.Resources>
现在在.cs文件中根据要求分配日期模板。
if (EditMode)
{
DemoCollection.ItemTemplate = this.Resources["EditModeTemplate"] as DataTemplate;
}
else
{
DemoCollection.ItemTemplate = this.Resources["ReaderModeTemplate"] as DataTemplate;
}