我已经创建了一个非常基本的UserControl
<StackPanel Margin="0,0,10,0" Width="{Binding ElementName=CurrentPresenter, Path=ActualWidth}" Orientation="Vertical">
<TextBlock Margin="5" HorizontalAlignment="Center" Text="{Binding HeaderText, ElementName=thisUserControl}"/>
<TextBlock Margin="5" HorizontalAlignment="Center" Text="{Binding ValueText, ElementName=thisUserControl}"/>
</StackPanel>
我希望它的默认宽度为“ 90”,但是如果给出另一个值,它将使用它。
如果我按照上面给出的代码进行操作,则没有FallbackValue,因此它使用给定的Width,或者,如果没有给出,则使用最小的宽度来显示其内容。像这样使用它:
<StackPanel Orientation="Horizontal">
<local:UserStackPanelList Height="60" HeaderText="Name" ValueText="{Binding Path=ShareName}" Width="200"/>
如果我将以下内容用于UserControl
<StackPanel Margin="0,0,10,0" Width="{Binding ElementName=CurrentPresenter, Path=ActualWidth, FallbackValue=90}" Orientation="Vertical">
该项目本身使用给定的宽度(200),但TextBlocks的宽度保持为90。
我试图给UserControl一个 Name =“ thisUserControl” ,所以我可以将它用作 ElementName ,但这也可以。该项目的宽度保持为200,但TextBlocks仅占用90(StackPanel的FallbackValue),即使更长的文本可以完整显示。
我如何才能达到预期的效果?
哪个是带有ItemTemplate的ListView
<ListView ItemsSource="{Binding Path=Shares}" Name="LV">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="{Binding Path=Backgropund}" Margin="5,2.5,5,2.5" >
<StackPanel Orientation="Horizontal">
<local:UserStackPanelList Height="60" HeaderText="Name" ValueText="{Binding Path=ShareName}" Width="200"/>
<local:UserStackPanelList Height="60" HeaderText="Amount" ValueText="{Binding Path=Amount}"/>
(对我来说)哪个看起来不错。但是,如果ShareName很长,它将被削减为Width(90)的FallbackValue。我调查了ListView.View-> GridView,但看起来并不那么好。我也无法绑定到BackgroundColor。但是拥有标题而不是为每个项目定义标题都非常不错。因此,如果您可以提出更好的版式,我将很高兴听到。一些代码也将非常不错。我无法理解https://docs.microsoft.com/de-de/dotnet/framework/wpf/controls/listview-overview“设计实现GridView的ListView的样式”一章的内容……
干杯汤姆斯