我在WPF中有一个具有ListView的项目。 我想在其中一个列中添加类似于组合框的控件,但是我希望它显示一些文本,这些文本将绑定到ListViewItem的对象的属性中。 类似于Visual Studio中“异常详细信息”窗口中的stacktrace字段。
我一直在寻找这个,但我只能找到一个属于付费控件包的控件。 有人有解决方案吗?
提前致谢!
答案 0 :(得分:0)
这可以是一个简单的 UserControl ,包含三个元素 - TextBox,Popup和Togglebutton。文本框应放在Popup的内部和外部。 Popup中的一个应该启用 TextWrap ,而外部则不启用。 弹出的 IsOpen 属性应绑定到 ToggleButton 的IsChecked。 UserControl的XAML如下所示,
<UserControl x:Class="WpfApplication6.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
MinWidth="150"
x:Name="root"
VerticalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Text="{Binding ElementName=root, Path=Text}"/>
<ToggleButton Grid.Column="1" Width="20"
x:Name="toggle">
<Path x:Name="Arrow"
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M 0 0 L 4 4 L 8 0 Z"
Fill="Black" />
</ToggleButton>
<Popup IsOpen="{Binding ElementName=toggle, Path=IsChecked}" StaysOpen="False"
Grid.Row="1" Grid.ColumnSpan="2">
<TextBox Text="{Binding ElementName=root, Path=Text}"
Width="{Binding ElementName=root, Path=ActualWidth}"
IsReadOnly="True"
AcceptsReturn="True"
TextWrapping="Wrap"/>
</Popup>
</Grid>
记住,您需要在userControl中使用名为 文本 的DependecyProperty。