WPF UserControl与ListBox和TextBox的悲痛无法使textwrapping工作

时间:2014-02-19 01:46:47

标签: wpf user-controls textbox listbox textwrapping

我正在尝试制作一个简单的用户控件,允许用户输入注释并查看他或她已经拍摄的注释。现在,我有一个ListBox来显示以前的音符和一个TextBox来输入一个新的音符。 ListBox还使用TextBoxs来显示各个音符。逻辑完全正常。现在我只想控制看起来更好一些。当其中一个音符很长时,我没有看到文字换行。我也没有在TextBox上看到文字环绕,我输入了一个新笔记。我试图对此进行研究,并发现了有关使用StackPanels的警告。因此这里没有堆叠面板!这是我的XAML

<UserControl.Resources>
    <DataTemplate x:Key="DefaultTemplate">
        <Grid x:Name="GridItem" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition  />   
            </Grid.ColumnDefinitions>
            <TextBox x:Name="NoteText" Grid.Column="0"   Margin="0,5,5,0" Text="{Binding Path=NoteText}" TextWrapping="Wrap" />               
        </Grid>
    </DataTemplate>
</UserControl.Resources>
<Grid Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TextBox Grid.Row="0"  Text="{Binding Path=NewNoteText, UpdateSourceTrigger=PropertyChanged}"   LostFocus="TextBox_LostFocus">
        <TextBox.InputBindings>
            <KeyBinding Command="{Binding Path=AddNote}" Key="Enter"/>
        </TextBox.InputBindings>
    </TextBox>

        <ListBox    Grid.Row="1"  ItemsSource="{Binding Path=Notes}"  Margin="5" ItemTemplate="{DynamicResource DefaultTemplate}"   SelectionChanged="NotesControl_SelectionChanged">
        </ListBox>


</Grid>

我尝试在UserResources中指定Width =“*”。这没有任何区别。如果我能帮忙的话,我真的不想为TextBox指定最大宽度。

以下是我在主要测试表单中的使用方法:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" ></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition ></RowDefinition>
    </Grid.RowDefinitions>

    <ctrlLib:RecordingListControl Grid.Row="0" Name="_ctrlRecordings" 
        PatientIdAndSessionNumber="{Binding  PatientIdAndSessionNumberMain, Mode=TwoWay}"                           
        SelectedItem="{Binding  SelectedItemMain, Mode=OneWayToSource}" />
    <Label Grid.Row="1" Content="{Binding SelectedItemMain.RecordingName}" />
    <ctrlLib:NotesControl Grid.Row="2"  Name="_ctrlNotes" PatientIdAndSessionNumber="{Binding PatientIdAndSessionNumberMain, Mode=TwoWay}" />

</Grid>

有什么想法吗?我得到一般的想法,没有任何东西告诉TextBox它的宽度是受约束的,所以没有调用TextWrapping,但我不知道如何telck TextBox有宽度约束。我看过各种关于不使用“自动”和使用“*”的帖子,但似乎没有任何效果!

展望未来,我对这个看起来的时期并不满意。我现在正在为每个我不喜欢的音符项目画一条线。此外,我希望您输入新笔记的文本框看起来像列表框的一部分,并显示在底部。 谢谢, 戴夫

0 个答案:

没有答案