C# 隐藏复选框,但显示其内容
是否可以隐藏复选框,但保持其内容可见C# 隐藏复选框,但显示其内容,c#,wpf,xaml,checkbox,listbox,C#,Wpf,Xaml,Checkbox,Listbox,是否可以隐藏复选框,但保持其内容可见 <ListBox ItemsSource ="{Binding MyItemCollection}" SelectionMode="Single" Width="300" Height="320"> <ListBox.ItemTemplate> <DataTemplate> &l
<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),但文本应该保持可见。为此,可以保留两个文本块。在编辑模式下,复选框可见,隐藏文本块;在读卡器模式下,反之亦然。我希望这能有所帮助。由于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>
我想到了3种可能的解决方案——其中两种或多或少是“黑客”,另一种或多或少是干净的解决方案:
Mukesh Kumar,谢谢,但这会导致错误“对象‘DataTemplate’已经有一个子对象,无法添加‘TextBlock’。‘DataTemplate’只能接受一个子对象。”DataTemplate实际上只能有一个子对象。要修复此问题,请将复选框和文本块水平包裹stackpanel@Dzhara,我只是想给你一个想法。现在我已经更新了代码。请看一下,如果有帮助请告诉我。
if (EditMode)
{
DemoCollection.ItemTemplate = this.Resources["EditModeTemplate"] as DataTemplate;
}
else
{
DemoCollection.ItemTemplate = this.Resources["ReaderModeTemplate"] as DataTemplate;
}