在WPF中下载TextArea

时间:2014-12-11 23:32:39

标签: c# wpf wpf-controls

我在WPF中有一个具有ListView的项目。 我想在其中一个列中添加类似于组合框的控件,但是我希望它显示一些文本,这些文本将绑定到ListViewItem的对象的属性中。 类似于Visual Studio中“异常详细信息”窗口中的stacktrace字段。

Exception View

我一直在寻找这个,但我只能找到一个属于付费控件包的控件。 有人有解决方案吗?

提前致谢!

1 个答案:

答案 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。