Wpf ListView内部的ListView+控件。可见性
我正在创建一个调查问卷应用程序。我的方法是创建一个包含问题文本的ListView和另一个包含ListAf Answers单选按钮的ListView。 当有一个问题有答案,而另一个问题需要一个文本框供用户输入一些文本时,问题就出现了。我怎样才能做到这一点?我的意思是,我想让文本框只有在答案集合中包含带有其他内容的RadioButton时才可见。 下面是我的ListView的xaml代码Wpf ListView内部的ListView+控件。可见性,wpf,listview,converter,visibility,Wpf,Listview,Converter,Visibility,我正在创建一个调查问卷应用程序。我的方法是创建一个包含问题文本的ListView和另一个包含ListAf Answers单选按钮的ListView。 当有一个问题有答案,而另一个问题需要一个文本框供用户输入一些文本时,问题就出现了。我怎样才能做到这一点?我的意思是,我想让文本框只有在答案集合中包含带有其他内容的RadioButton时才可见。 下面是我的ListView的xaml代码 <ListView SelectionChanged="myList_SelectionChanged"
<ListView SelectionChanged="myList_SelectionChanged" ItemsSource="{Binding OCquestions}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Margin="20 0 20 0">
<TextBlock Text="{Binding Path=questionText}"/>
<ListView Name="ListaLista" SelectionChanged="myList_SelectionChanged" ItemsSource="{Binding Path=listOfAnswer}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<RadioButton GroupName="{Binding Path=questId}" Content="{Binding Path=answerText}" Checked="RadioButton_Checked"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
// HERE I WANT A TEXTBOX WHICH IS VISIBLE ONLY WHEN listOfAnswer collection contain a RadioButton with Content "Others"
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我不知道如何做到这一点。我不熟悉转换器。有人能给我一些提示吗?首先添加一个值转换器:
您需要一些触发器来显示/隐藏文本框,如下所示:
<DataTemplate>
<StackPanel Orientation="Horizontal">
<RadioButton GroupName="{Binding Path=questId}"
Content="{Binding Path=answerText}"
Checked="RadioButton_Checked" Name="radio"/>
<TextBox Name="other" Visibility="Collapsed"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding answerText}" Value="Other">
<Setter TargetName="radio" Property="Content" Value=""/>
<Setter TargetName="other" Property="Visibility" Value="Visible"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
您可以看到DataTrigger侦听answerText,如果它是其他的,只需将Radio的内容设置为空字符串,并将文本框的可见性设置为Visible即可显示它。此文本框将显示在单选按钮的右侧。太好了,它工作正常。我想我应该再问一个问题,但你可以帮我。我想禁用/启用此文本框,而您称之为“radio”的单选按钮是否选中。你也能帮我吗?别担心,我知道了。再次非常感谢。看起来很不错,但我还没试过,因为第一个解决方案满足了我的需要,所以我把第一个标记为答案。谢谢你的回答。
<TextBox Visibility="{Binding Path=listOfAnswer, Converter={AnswerCollectionToVisibilityConverter}}" />
<DataTemplate>
<StackPanel Orientation="Horizontal">
<RadioButton GroupName="{Binding Path=questId}"
Content="{Binding Path=answerText}"
Checked="RadioButton_Checked" Name="radio"/>
<TextBox Name="other" Visibility="Collapsed"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding answerText}" Value="Other">
<Setter TargetName="radio" Property="Content" Value=""/>
<Setter TargetName="other" Property="Visibility" Value="Visible"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>