Я создал очень простой 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 отсутствует, поэтому он использует заданную ширину или, если не указано иное, минимально возможное отображение содержимого. Используя это как:
<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), но текстовые блоки остаются на ширине 90.
Я попытался дать UserControl Name = "thisUserControl" , чтобы я мог использовать его как ElementName , но эта работа также не работает. Элемент имеет ширину 200, но TextBlocks занимает только 90 (FallbackValue of StackPanel), даже если текст длиннее для отображения в полном объеме.
Как мне добиться, чтобы он работал как нужно?
Edit:
У меня есть это:
Что такое ListView с ItemTemplate
<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 длинное, оно обрезается до FallbackValue Width (90). Я посмотрел в ListView.View -> GridView, но это выглядит не так хорошо. Я не смог заставить работать привязку к BackgroundColor. Но иметь заголовок вместо определения его для каждого элемента довольно приятно. Так что, если бы вы могли предложить лучший макет, я был бы рад услышать. Некоторый код тоже был бы неплох. Я не мог получить навык https://docs.microsoft.com/de-de/dotnet/framework/wpf/controls/listview-overview «Стилизация ListView, который реализует GridView» глава ...
Приветствия Томс