App: Replace DataTemplate/ControlTemplate with TemplateSelector

This commit is contained in:
2024-04-30 13:02:45 +02:00
parent c4d68d11bc
commit 8bf8362480
6 changed files with 77 additions and 40 deletions

View File

@ -29,25 +29,17 @@
</StackPanel>
</DataTemplate>
<ControlTemplate x:Key="WineVarietyTemplateSimple">
<DataTemplate x:Key="WineVarietyTemplateCollapsed">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</ControlTemplate>
<ControlTemplate x:Key="WineVarietyTemplateExtended">
</DataTemplate>
<DataTemplate x:Key="WineVarietyTemplateExpanded">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SortId}" MinWidth="36" Margin="0,0,10,0"/>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding CommentFormat}" FontSize="10" VerticalAlignment="Bottom" Margin="0,0,0,2"/>
</StackPanel>
</ControlTemplate>
<DataTemplate x:Key="WineVarietyTemplate">
<Control x:Name="Control" Focusable="False" Template="{StaticResource WineVarietyTemplateExtended}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ComboBoxItem}}, Path=IsSelected}" Value="{x:Null}">
<Setter TargetName="Control" Property="Template" Value="{StaticResource WineVarietyTemplateSimple}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate x:Key="ModifierTemplate">
@ -63,25 +55,17 @@
</StackPanel>
</DataTemplate>
<ControlTemplate x:Key="WineQualityLevelTemplateSimple">
<DataTemplate x:Key="WineQualityLevelTemplateCollapsed">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</ControlTemplate>
<ControlTemplate x:Key="WineQualityLevelTemplateExtended">
</DataTemplate>
<DataTemplate x:Key="WineQualityLevelTemplateExpanded">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding IsPredicate, Converter={StaticResource BoolToStarConverter}}" MinWidth="6"/>
<TextBlock Text="{Binding Name}" MinWidth="100" Margin="0,0,10,0"/>
<TextBlock Text="{Binding MinKmwStr}"/>
</StackPanel>
</ControlTemplate>
<DataTemplate x:Key="WineQualityLevelTemplate">
<Control x:Name="Control" Focusable="False" Template="{StaticResource WineQualityLevelTemplateExtended}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ComboBoxItem}}, Path=IsSelected}" Value="{x:Null}">
<Setter TargetName="Control" Property="Template" Value="{StaticResource WineQualityLevelTemplateSimple}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate x:Key="WineOriginTemplate">
@ -90,24 +74,16 @@
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
<ControlTemplate x:Key="WineOriginTemplateSimple">
<DataTemplate x:Key="WineOriginTemplateCollapsed">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</ControlTemplate>
<ControlTemplate x:Key="WineOriginTemplateExtended">
</DataTemplate>
<DataTemplate x:Key="WineOriginTemplateExpanded">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding HkIdLevel}" MinWidth="70" Margin="0,0,10,0"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</ControlTemplate>
<DataTemplate x:Key="WineOriginComboTemplate">
<Control x:Name="Control" Focusable="False" Template="{StaticResource WineOriginTemplateExtended}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ComboBoxItem}}, Path=IsSelected}" Value="{x:Null}">
<Setter TargetName="Control" Property="Template" Value="{StaticResource WineOriginTemplateSimple}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate x:Key="GemTemplate">

View File

@ -0,0 +1,15 @@
using System.Windows.Controls;
using System.Windows;
namespace Elwig.Controls {
public class WineOriginTemplateSelector : DataTemplateSelector {
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
ContentPresenter presenter = (ContentPresenter)container;
if (presenter.TemplatedParent is ComboBox) {
return (DataTemplate)presenter.FindResource("WineOriginTemplateCollapsed");
} else {
return (DataTemplate)presenter.FindResource("WineOriginTemplateExpanded");
}
}
}
}

View File

@ -0,0 +1,15 @@
using System.Windows.Controls;
using System.Windows;
namespace Elwig.Controls {
public class WineQualityLevelTemplateSelector : DataTemplateSelector {
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
ContentPresenter presenter = (ContentPresenter)container;
if (presenter.TemplatedParent is ComboBox) {
return (DataTemplate)presenter.FindResource("WineQualityLevelTemplateCollapsed");
} else {
return (DataTemplate)presenter.FindResource("WineQualityLevelTemplateExpanded");
}
}
}
}

View File

@ -0,0 +1,15 @@
using System.Windows.Controls;
using System.Windows;
namespace Elwig.Controls {
public class WineVarietyTemplateSelector : DataTemplateSelector {
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
ContentPresenter presenter = (ContentPresenter)container;
if (presenter.TemplatedParent is ComboBox) {
return (DataTemplate)presenter.FindResource("WineVarietyTemplateCollapsed");
} else {
return (DataTemplate)presenter.FindResource("WineVarietyTemplateExpanded");
}
}
}
}

View File

@ -355,8 +355,12 @@
<Label Content="Sorte:" Margin="10,40,0,10"/>
<ComboBox x:Name="AreaCommitmentTypeWineVariantInput" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,40,10,10" Width="250" HorizontalAlignment="Left"
ItemTemplate="{StaticResource WineVarietyTemplate}" TextSearch.TextPath="Name"
SelectionChanged="AreaCommitmentType_Changed"/>
TextSearch.TextPath="Name"
SelectionChanged="AreaCommitmentType_Changed">
<ComboBox.ItemTemplateSelector>
<ctrl:WineVarietyTemplateSelector/>
</ComboBox.ItemTemplateSelector>
</ComboBox>
<Label Content="Attribut:" Margin="10,70,0,10"/>
<ComboBox x:Name="AreaCommitmentTypeWineAttributeInput" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,70,10,10" Width="250" HorizontalAlignment="Left"

View File

@ -383,8 +383,12 @@
<TextBox x:Name="SortIdInput" Width="36" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" HorizontalAlignment="Left"
TextChanged="SortIdInput_TextChanged" LostFocus="SortIdInput_LostFocus" KeyUp="Input_KeyUp"/>
<ComboBox x:Name="WineVarietyInput" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="41,10,10,10"
ItemTemplate="{StaticResource WineVarietyTemplate}" TextSearch.TextPath="Name"
SelectionChanged="WineVarietyInput_SelectionChanged" KeyUp="Input_KeyUp"/>
TextSearch.TextPath="Name"
SelectionChanged="WineVarietyInput_SelectionChanged" KeyUp="Input_KeyUp">
<ComboBox.ItemTemplateSelector>
<ctrl:WineVarietyTemplateSelector/>
</ComboBox.ItemTemplateSelector>
</ComboBox>
<Label Content="Attr./Bewirt.:" Margin="10,40,0,0" Grid.Column="0"/>
<ComboBox x:Name="AttributeInput" Grid.Row="1" Grid.Column="1" Margin="0,40,5,10"
@ -412,8 +416,12 @@
<Label Content="Qualitätsstufe:" Margin="10,40,10,10"/>
<ComboBox x:Name="WineQualityLevelInput" Width="146" Margin="0,40,10,10" Grid.Column="1" HorizontalAlignment="Left"
ItemTemplate="{StaticResource WineQualityLevelTemplate}"
SelectionChanged="WineQualityLevelInput_SelectionChanged" KeyUp="Input_KeyUp"/>
TextSearch.TextPath="Name"
SelectionChanged="WineQualityLevelInput_SelectionChanged" KeyUp="Input_KeyUp">
<ComboBox.ItemTemplateSelector>
<ctrl:WineQualityLevelTemplateSelector/>
</ComboBox.ItemTemplateSelector>
</ComboBox>
<CheckBox x:Name="AbgewertetInput" Content="Abgewertet" IsEnabled="False"
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2"/>
@ -535,7 +543,11 @@
<Label Content="Weinbaugebiet:" Margin="10,10,0,10" Grid.Column="0"/>
<ComboBox x:Name="WineOriginInput" Margin="0,10,10,10" Grid.Column="1"
ItemTemplate="{StaticResource WineOriginComboTemplate}"/>
TextSearch.TextPath="Name">
<ComboBox.ItemTemplateSelector>
<ctrl:WineOriginTemplateSelector/>
</ComboBox.ItemTemplateSelector>
</ComboBox>
<Label Content="Weinbau-KG:" Margin="10,40,0,10" Grid.Column="0"/>
<ComboBox x:Name="WineKgInput" Margin="0,40,10,10" Grid.Column="1"