Files
TradeBlotter/Views/ValuationsView.xaml
2024-02-23 06:58:53 -05:00

308 lines
21 KiB
XML

<UserControl x:Class="TradeBlotter.Views.ValuationsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:dc="clr-namespace:TradeBlotter.UIUtils"
xmlns:vw="clr-namespace:TradeBlotter.Views"
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"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:wpfx="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<CollectionViewSource
x:Key="Valuations"
Source="{Binding Path=AllValuations}"
>
</CollectionViewSource>
<GroupStyle x:Key="ValuationGroupStyle">
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock
x:Name="txt"
Background="{StaticResource Brush_HeaderBackground}"
FontWeight="Bold"
Foreground="White"
Margin="1"
Padding="4,2,0,2"
Text="People"
/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Name}" Value="True">
<Setter TargetName="txt" Property="Text" Value="Companies" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
<Style x:Key="ValuationItemStyle" TargetType="{x:Type ListViewItem}">
<!--
Stretch the content of each cell so that we can
right-align text in the Total Sales column.
-->
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<!--
Bind the IsSelected property of a ListViewItem to the
IsSelected property of a ValuationViewModel object.
-->
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ItemsControl.AlternationIndex" Value="1" />
<Condition Property="IsSelected" Value="False" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="#EEEEEEEE" />
</MultiTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<wpfx:BusyIndicator Name="BusyBar" IsBusy="{Binding Path=BusyIndicator}" BusyContent="{Binding Path=BusyContent}">
<Grid Background="LightGray">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0">
<Label Content="Valuation Date" HorizontalAlignment="Right"></Label>
<ComboBox ItemsSource="{Binding Path=ValuationDates, Mode=OneTime}" SelectedItem="{Binding Path=SelectedValuationDate, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{x:Null}" >
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
<Label Content="Sort Filter" HorizontalAlignment="Center"></Label>
<ComboBox ItemsSource="{Binding Path=SortFilters, Mode=OneTime}" SelectedItem="{Binding Path=SelectedSortFilter}" >
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
<Label Content="Row Count" HorizontalAlignment="Center"></Label>
<TextBox Text="{Binding Path=RowCount, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" AcceptsReturn="False" IsReadOnly="True"/>
<Button Content="Save" Command="{Binding Path=SaveCommand}"></Button>
</StackPanel>
<DockPanel Grid.Row="0" Grid.Column="2" >
<telerik:RadGridView SelectedItem="{Binding SelectedItem, Mode=TwoWay}" dc:GridExportGraphBehavior.ExportExcelProperty="{Binding Path=SaveDocument}" AlternationCount="2" AlternateRowBackground="Bisque" ShowGroupFooters="True" ItemsSource="{Binding Path=AllValuations, ValidatesOnDataErrors=True}" AutoGenerateColumns="False" >
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu x:Name="GridContextMenu" StaysOpen="False" ItemsSource="{Binding MenuItems}">
<telerik:RadContextMenu.ItemContainerStyle>
<Style TargetType="telerik:RadMenuItem">
<Setter Property="Header" Value="{Binding Text}" />
<Setter Property="Command" Value="{Binding MenuItemClickedCommand}" />
<Setter Property="StaysOpenOnClick" Value="False" />
</Style>
</telerik:RadContextMenu.ItemContainerStyle>
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Symbol" DataMemberBinding="{Binding Path=Symbol}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.CompanyDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Company" DataMemberBinding="{Binding Path=Company}" />
<telerik:GridViewDataColumn Header="Sector" DataMemberBinding="{Binding Path=Sector}" />
<telerik:GridViewDataColumn Header="Industry" DataMemberBinding="{Binding Path=Industry}" />
<telerik:GridViewDataColumn Header="Dividend Yield" DataMemberBinding="{Binding Path=DividendYield,StringFormat='{}{0:P}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.DividendYieldDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Beta90" DataMemberBinding="{Binding Path=Beta90}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.BetaDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Beta2Y" DataMemberBinding="{Binding Path=Beta2Y}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.BetaDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Acquirers Multiple Rank" DataMemberBinding="{Binding Path=AMRank,StringFormat='{}{0:N0}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.AMRankDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="TLBRankROIC" DataMemberBinding="{Binding Path=TLBRankROIC,StringFormat='{}{0:N0}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.TLBRankROICDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="TLBRankROC" DataMemberBinding="{Binding Path=TLBRankROC,StringFormat='{}{0:N0}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.TLBRankROCDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="MarketCap" DataMemberBinding="{Binding Path=MarketCap,StringFormat='{}{0:C}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.MarketCapDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="EBIT" DataMemberBinding="{Binding Path=EBIT,StringFormat='{}{0:C}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.EBITDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="AcquirersMultiple" DataMemberBinding="{Binding Path=AcquirersMultiple}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.AcquirersMultipleDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Operating Earnings" DataMemberBinding="{Binding Path=OperatingEarnings,StringFormat='{}{0:C}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.OperatingEarningsDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Earnings Yield" DataMemberBinding="{Binding Path=EarningsYield,StringFormat='{}{0:P}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.EarningsYieldDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Enterprise Value" DataMemberBinding="{Binding Path=EnterpriseValue,StringFormat='{}{0:C}'}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.EnterpriseValueDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="SEC13" DataMemberBinding="{Binding Path=SEC13}" />
<telerik:GridViewDataColumn Header="SEC13Filing" DataMemberBinding="{Binding Path=SEC13FilingDate}" />
<telerik:GridViewDataColumn Header="DebtToEquity" DataMemberBinding="{Binding Path=DebtToEquity}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.DebtToEquityDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Long Term Debt" DataMemberBinding="{Binding Path=LongTermDebt}" />
<telerik:GridViewDataColumn Header="Debt Load" DataMemberBinding="{Binding Path=DebtLoad}" />
<telerik:GridViewDataColumn Header="Revenue" DataMemberBinding="{Binding Path=Revenue}" />
<telerik:GridViewDataColumn Header="ROC" DataMemberBinding="{Binding Path=LatestROC,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="ROIC" DataMemberBinding="{Binding Path=LatestROIC,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="ROIC(Avg)" DataMemberBinding="{Binding Path=AverageROIC,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="ROIC Slope" DataMemberBinding="{Binding Path=ROICSlope,StringFormat='{}{0:N}'}" />
<telerik:GridViewDataColumn Header="ROIC Dates" DataMemberBinding="{Binding Path=ROICDates}" />
<telerik:GridViewDataColumn Header="EquityGrowth(Avg)" DataMemberBinding="{Binding Path=AverageEquityGrowth,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="EquityGrowth2Y(Avg)" DataMemberBinding="{Binding Path=AverageEquityGrowth2Y,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="EquityGrowth4Y(Avg)" DataMemberBinding="{Binding Path=AverageEquityGrowth4Y,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="EPSGrowth(Avg)" DataMemberBinding="{Binding Path=AverageEPSGrowth,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="EPSGrowth2Y(Avg)" DataMemberBinding="{Binding Path=AverageEPSGrowth2Y,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="EPSGrowth4Y(Avg)" DataMemberBinding="{Binding Path=AverageEPSGrowth4Y,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="RevenueGrowth(Avg)" DataMemberBinding="{Binding Path=AverageRevenueGrowth,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="RevenueGrowth2Y(Avg)" DataMemberBinding="{Binding Path=AverageRevenueGrowth2Y,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="RevenueGrowth4Y(Avg)" DataMemberBinding="{Binding Path=AverageRevenueGrowth4Y,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="FreeCashflowGrowth(Avg)" DataMemberBinding="{Binding Path=AverageFreeCashflowGrowth,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="OperatingCashflow(Latest)" DataMemberBinding="{Binding Path=OperatingCashflow}" />
<telerik:GridViewDataColumn Header="OperatingCashflow(Avg)" DataMemberBinding="{Binding Path=AverageOperatingCashflow,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="WorkingCapital(Avg)" DataMemberBinding="{Binding Path=AverageWorkingCapital,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="Shares Oustanding" DataMemberBinding="{Binding Path=SharesOutstanding}" />
<telerik:GridViewDataColumn Header="BVPS" DataMemberBinding="{Binding Path=BVPS,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="BVPS Dates" DataMemberBinding="{Binding Path=BVPSDates}" />
<telerik:GridViewDataColumn Header="PBVPS" DataMemberBinding="{Binding Path=PBVPS,StringFormat='{}{0:0.00}'}" />
<telerik:GridViewDataColumn Header="EPS" DataMemberBinding="{Binding Path=EPS,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="PE" DataMemberBinding="{Binding Path=PE,StringFormat='{}{0:F}'}" />
<telerik:GridViewDataColumn Header="P/CF" DataMemberBinding="{Binding Path=PCF}" >
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Background="LemonChiffon" MaxWidth="1000" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type vw:ValuationsView}},Path=DataContext.PCFDescription}"/>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="PEG" DataMemberBinding="{Binding Path=PEG,StringFormat='{}{0:F}'}" />
<telerik:GridViewDataColumn Header="ImpliedEarningsGrowth" DataMemberBinding="{Binding Path=ImpliedEarningsGrowth,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="Next Earnings Date" DataMemberBinding="{Binding Path=NextEarningsDate,StringFormat='{}{0:MM/dd/yyyy}'}" />
<telerik:GridViewDataColumn Header="LowPE (2xEPS)" DataMemberBinding="{Binding Path=LowPE,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="TrailingPE" DataMemberBinding="{Binding Path=TrailingPE,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="AverageLowTrailing" DataMemberBinding="{Binding Path=AverageLowTrailing,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="CurrentStockEstimatePrice" DataMemberBinding="{Binding Path=CurrentStockEstimatePrice,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="PriceEstimate10Y" DataMemberBinding="{Binding Path=PriceEstimate10Y,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="TodaysPriceForRequiredReturn" DataMemberBinding="{Binding Path=TodaysPriceForRequiredReturn,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="LatestPrice" DataMemberBinding="{Binding Path=LatestPrice,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="MOS" DataMemberBinding="{Binding Path=MOS,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="MOS80" DataMemberBinding="{Binding Path=MOS80,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="IntrinsicValue" DataMemberBinding="{Binding Path=IntrinsicValue,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="FundamentalValue" DataMemberBinding="{Binding Path=FundamentalValue,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="NCAVPS" DataMemberBinding="{Binding Path=NetCurrentAssetValuePerShare,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="RGV" DataMemberBinding="{Binding Path=RGV,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="UpsidePcnt" DataMemberBinding="{Binding Path=UpsidePcnt,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="DownsidePcnt" DataMemberBinding="{Binding Path=DownsidePcnt,StringFormat='{}{0:P}'}" />
<telerik:GridViewDataColumn Header="MeanTargetPrice" DataMemberBinding="{Binding Path=MeanTargetPrice,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="LowTargetPrice" DataMemberBinding="{Binding Path=LowTargetPrice,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="HighTargetPrice" DataMemberBinding="{Binding Path=HighTargetPrice,StringFormat='{}{0:C}'}" />
<telerik:GridViewDataColumn Header="Bargain(MOS)" DataMemberBinding="{Binding Path=Bargain}" />
<telerik:GridViewDataColumn Header="Bargain(MOS80)" DataMemberBinding="{Binding Path=Bargain80}" />
<telerik:GridViewDataColumn Header="DateGenerated" DataMemberBinding="{Binding Path=DateGenerated}" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</DockPanel>
</Grid>
</wpfx:BusyIndicator>
</UserControl>