我正在尝试制作一个简单的用户控件,允许用户输入注释并查看他或她已经拍摄的注释。现在,我有一个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有宽度约束。我看过各种关于不使用“自动”和使用“*”的帖子,但似乎没有任何效果!
展望未来,我对这个看起来的时期并不满意。我现在正在为每个我不喜欢的音符项目画一条线。此外,我希望您输入新笔记的文本框看起来像列表框的一部分,并显示在底部。 谢谢, 戴夫