- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在这个很棒的平台上的第一个问题,是的,我在这里搜索了如何执行此操作,在我的情况下很少见,因为它应该可以工作,但我从 SelectedItem 中得到的只是一个字符串(它的内容,这是一个 TextBlock)
这是 XAML 部分,它是一个带有 ListItems 堆栈的列表框:
<Button x:Name="propertyChooser" BorderBrush="{x:Null}" Height="90" Margin="22,379,21,0" OpacityMask="{x:Null}" Style="{StaticResource ButtonStyle1}" VerticalAlignment="Top" Content="" Foreground="Black" Click="propertyChooser_Click" >
<Button.Background>
<ImageBrush ImageSource="/AminoBlocks;component/Images/fillblock.png" />
</Button.Background>
</Button>
<Popup x:Name="PropertyPopUp" Margin="0,0,0,0" Height="400" Width="400" IsOpen="False" >
<!--ScrollViewer x:Name="PageScrollViewer1" Height="620" Width="400"-->
<Grid Height="400" Width="400" Background="White">
<ListBox x:Name="propertyPicker" Margin="0,0,0,0" Height="400" Width="400" SelectionChanged="propertyPicker_SelectionChanged">
<ListBoxItem>
<TextBlock x:Name="property1" Foreground="Black" FontSize="24" Height="45" Width="450" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" Text="Non-polar, aliphatic" TextAlignment="Center"/>
<!--Click="property1_Click"-->
</ListBoxItem>
<ListBoxItem>
<TextBlock x:Name="property2" Foreground="Black" FontSize="24" Height="45" Width="450" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" Text="Non-polar, aromatic" TextAlignment="Center"/>
<!--Click="property1_Click"-->
</ListBoxItem>
<ListBoxItem>
...
好的,列表是9个项目,当你点击按钮时,列表显示为弹出,然后你按下或选择属性和后面的代码,它假设将按钮内容更改为所选属性在列表框中。到目前为止,我找到了如何做到这一点,但我得到空或空或内容的类型,即 selectedItem 的类型,列表框项目的类型。我想要的只是我从 ListBox 中选择的 ListBoxItem 中的 TextBlock 的文本。
这背后的代码是:
private void propertyPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListBoxItem selected = propertyPicker.SelectedItem as ListBoxItem; //Selected item.
string selectedText = selected.Content as String; //Content of the Item.
if (propertyPicker.SelectedItem != null)
propertyChooser.Content = selectedText; //(propertyPicker.SelectedItem as ListBoxItem).Content as string;
PropertyPopUp.IsOpen = false; //When the item get selected, close the pop up.
}
...
是的,这应该可以完成这项工作,但它并没有,正如我上面所说的,它只是让我得到一个空的,null 或 selectedItem 的类型,listboxitem 的类型......我试了很长时间方式,正在实现的方式和最短的方式,在旁边评论的方式。
为什么 SelectedItem 不会,它的内容不会按原样传递,来自 TextBlock 的文本,这是 ListBox 在其中作为 ListBoxItem 的内容?
感谢任何回答我的菜鸟问题的人,如果我在发布这个问题或在编码时犯了一个错误,请原谅我,我似乎不太明白,因为我在这里问,因为必须是逻辑或我的视线看不到的其他类型的错误。
fr33
最佳答案
您的列表框的内容是文本 block 。尝试将 SelectedItem 转换为 TextBlock,然后从中获取文本。
关于c# - 为什么没有像往常一样提取 SelectedItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260582/
我是一名优秀的程序员,十分优秀!