JD2022-TU1/main/tools/modules/JD.Guinness.WPF.Module/View/StadiaView.xaml

471 lines
30 KiB
XML

<DockPanel
x:Class="JD.Guinness.WPF.Module.View.StadiaView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:editors="http://schemas.actiprosoftware.com/winfx/xaml/editors"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dataGrid="clr-namespace:ActiproSoftware.Windows.Controls.DataGrid;assembly=DataGrid.Contrib"
xmlns:google="clr-namespace:JD.GoogleAchievement.Service;assembly=JD.GoogleAchievement.Service"
xmlns:behavior="clr-namespace:JD.Guinness.WPF.Module.Behavior"
xmlns:control="clr-namespace:JD.Guinness.WPF.Module.Control"
Name="This"
Margin="5">
<DockPanel.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../Resource/Icons.xaml"/>
<ResourceDictionary Source="../Resource/Converters.xaml"/>
</ResourceDictionary.MergedDictionaries>
<control:DataGridHeaderTemplateSelector x:Key="DataGridHeaderTemplateSelector" />
</ResourceDictionary>
</DockPanel.Resources>
<DockPanel DockPanel.Dock="Bottom" Margin="0,5,0,0" IsEnabled="{Binding Game.IsAvailable}">
<Button Margin="5,0,0,0" DockPanel.Dock="Right" VerticalAlignment="Bottom" Command="{Binding GenerateCommand}" Height="40" Padding="5">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Generate " VerticalAlignment="Center"/>
<ContentPresenter ContentTemplate="{StaticResource GenerateIcon}"/>
</StackPanel>
</Button>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="5"/>
<RowDefinition/>
<RowDefinition Height="5"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Store front file" Margin="0,0,5,0" VerticalAlignment="Center"/>
<TextBlock Text="Excel file" Margin="0,0,5,0" Grid.Row="2" VerticalAlignment="Center"/>
<TextBlock Text="Icons folder" Margin="0,0,5,0" Grid.Row="4" VerticalAlignment="Center"/>
<TextBox Text="{Binding Configuration.StoreFrontFilePath}" Grid.Column="1"/>
<TextBox Text="{Binding Configuration.ExcelFilePath}" Grid.Column="1" Grid.Row="2"/>
<TextBox Text="{Binding Configuration.IconsFolderPath}" Grid.Column="1" Grid.Row="4"/>
<Button Content="..." Command="{Binding SelectStoreFrontFileCommand}" Grid.Column="2"/>
<Button Content="..." Command="{Binding SelectExcelFileCommand}" Grid.Column="2" Grid.Row="2"/>
<Button Content="..." Command="{Binding SelectIconsFolderCommand}" Grid.Column="2" Grid.Row="4"/>
<CheckBox Content="Sync to store front" IsChecked="{Binding Configuration.SyncToStoreFront}" Margin="5,0,0,0" VerticalAlignment="Center" Grid.Column="3"/>
<CheckBox Content="Generate excel" IsChecked="{Binding Configuration.GenerateExcel}" Margin="5,0,0,0" VerticalAlignment="Center" Grid.Column="3" Grid.Row="2" Grid.RowSpan="3"/>
</Grid>
</DockPanel>
<Expander DockPanel.Dock="Bottom" Margin="0,5,0,0">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Languages" FontSize="15" VerticalAlignment="Center"/>
<Button ToolTip="Set languages from store front file" Margin="5,0,0,0" Width="30" Height="30" Padding="0" Command="{Binding SetLanguagesFromStoreFrontFileCommand}">
<ContentPresenter ContentTemplate="{StaticResource StoreIcon}"/>
</Button>
</StackPanel>
</Expander.Header>
<dataGrid:ThemedDataGrid
ItemsSource="{Binding Configuration.Languages}"
AutoGenerateColumns="False"
IsReadOnly="{Binding Game.IsAvailable, Converter={StaticResource InverseBooleanConverter}}"
SelectionMode="Single"
GridLinesVisibility="None"
HeadersVisibility="Column"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
CanUserSortColumns="True"
ColumnWidth="Auto">
<dataGrid:ThemedDataGrid.ContextMenu>
<ContextMenu>
<MenuItem
Header="Shown columns"
ItemsSource="{Binding PlacementTarget.Columns, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
ItemTemplateSelector="{StaticResource DataGridHeaderTemplateSelector}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource ColumnsIcon}"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem
Header="Duplicate language"
Command="{Binding Game.DuplicateLanguageCommand}"
CommandParameter="{Binding PlacementTarget.SelectedItem.Value, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource DuplicateIcon}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem
Header="Remove duplicate language"
Command="{Binding Game.RemoveLanguageCommand}"
CommandParameter="{Binding PlacementTarget.SelectedItem.Value, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource RemoveIcon}"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</dataGrid:ThemedDataGrid.ContextMenu>
<dataGrid:ThemedDataGrid.Columns>
<DataGridCheckBoxColumn Header="Include" Binding="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTemplateColumn Header="Oasis name" IsReadOnly="True" SortMemberPath="Value.Language.Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Value.Language.Name}"/>
<TextBlock Text="*">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Value.IsDuplicate}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Oasis id" Binding="{Binding Value.Language.Id}" IsReadOnly="True" Visibility="Collapsed"/>
<DataGridTextColumn Header="Google id" Binding="{Binding Value.GoogleId, UpdateSourceTrigger=PropertyChanged}"/>
</dataGrid:ThemedDataGrid.Columns>
</dataGrid:ThemedDataGrid>
</Expander>
<Grid DockPanel.Dock="Top" Margin="0,0,0,5">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<StackPanel.Resources>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Width" Value="30"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Padding" Value="0"/>
</Style>
</StackPanel.Resources>
<Button ToolTip="Add Stadia achievement" Command="{Binding AddPlatformChallengeCommand}">
<ContentPresenter ContentTemplate="{StaticResource AddIcon}"/>
</Button>
<Button ToolTip="Remove Stadia achievement" Command="{Binding RemovePlatformChallengeCommand}" CommandParameter="{Binding SelectedItems, ElementName=DataGrid}" Margin="5,0,0,0">
<ContentPresenter ContentTemplate="{StaticResource RemoveIcon}"/>
</Button>
<Button ToolTip="Duplicate Stadia achievement" Command="{Binding DuplicatePlatformChallengeCommand}" CommandParameter="{Binding SelectedItems, ElementName=DataGrid}" Margin="5,0,0,0">
<ContentPresenter ContentTemplate="{StaticResource DuplicateIcon}"/>
</Button>
<Button ToolTip="Set locked images from id" Command="{Binding SetLockedImageFromIdCommand}" Margin="10,0,0,0">
<ContentPresenter ContentTemplate="{StaticResource LockedImageFolderIcon}"/>
</Button>
<Button ToolTip="Set unlocked images from id" Command="{Binding SetUnlockedImageFromIdCommand}" Margin="5,0,0,0">
<ContentPresenter ContentTemplate="{StaticResource UnlockedImageFolderIcon}"/>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<ContentControl ToolTip="{Binding Configuration.Warnings}" Margin="0,0,5,0">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Configuration.Warnings}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
<ContentPresenter Height="24" ContentTemplate="{StaticResource WarningIcon}"/>
</ContentControl>
<TextBlock Text="{Binding PlatformChallenges.Count, StringFormat={}{0} achievements}" VerticalAlignment="Center" FontSize="15"/>
</StackPanel>
</Grid>
<dataGrid:ThemedDataGrid
Name="DataGrid"
ItemsSource="{Binding PlatformChallenges}"
behavior:DataGridBehavior.ShowCustomColumns="True"
AutoGenerateColumns="False"
IsReadOnly="{Binding Game.IsAvailable, Converter={StaticResource InverseBooleanConverter}}"
SelectionMode="Extended"
GridLinesVisibility="None"
HeadersVisibility="Column"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
CanUserSortColumns="True"
CanUserReorderColumns="True"
ColumnWidth="Auto">
<dataGrid:ThemedDataGrid.Resources>
<Style TargetType="editors:AutoCompleteBox" BasedOn="{StaticResource {x:Type editors:AutoCompleteBox}}">
<Setter Property="ItemsSource" Value="{Binding DataContext.Game.OasisLines, ElementName=This}"/>
<Setter Property="PlaceholderText" Value="Select an oasis line"/>
<Setter Property="DataFilter">
<Setter.Value>
<editors:AutoCompleteBoxStringFilter />
</Setter.Value>
</Setter>
<Setter Property="behavior:AutoCompleteBoxBehavior.ShowAllOnOpen" Value="True" />
</Style>
</dataGrid:ThemedDataGrid.Resources>
<dataGrid:ThemedDataGrid.InputBindings>
<KeyBinding Key="Insert" Command="{Binding AddPlatformChallengeCommand}"/>
<KeyBinding Key="Delete" Command="{Binding RemovePlatformChallengeCommand}" CommandParameter="{Binding SelectedItems, ElementName=DataGrid}"/>
<KeyBinding Key="F1" Command="{Binding Game.ItemFocuser.GoToItemCommand}" CommandParameter="{Binding SelectedItem.Challenge, ElementName=DataGrid}"/>
</dataGrid:ThemedDataGrid.InputBindings>
<dataGrid:ThemedDataGrid.ContextMenu>
<ContextMenu>
<MenuItem
Header="Add new column"
Command="{Binding Source={x:Static behavior:DataGridBehavior.AddColumnCommand}}"
CommandParameter="{Binding PlacementTarget, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource AddColumnIcon}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem
Header="Shown columns"
ItemsSource="{Binding PlacementTarget.Columns, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
ItemTemplateSelector="{StaticResource DataGridHeaderTemplateSelector}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource ColumnsIcon}"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem
Header="Go to challenge"
InputGestureText="F1"
Command="{Binding Game.ItemFocuser.GoToItemCommand}"
CommandParameter="{Binding PlacementTarget.SelectedItem.Challenge, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
<Separator/>
<MenuItem
Header="Add Stadia achievement"
Command="{Binding AddPlatformChallengeCommand}"
InputGestureText="Insert">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource AddIcon}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem
Header="Remove Stadia achievement"
Command="{Binding RemovePlatformChallengeCommand}"
CommandParameter="{Binding PlacementTarget.SelectedItems, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
InputGestureText="Delete">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource RemoveIcon}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem
Header="Duplicate Stadia achievement"
Command="{Binding DuplicatePlatformChallengeCommand}"
CommandParameter="{Binding PlacementTarget.SelectedItems, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource DuplicateIcon}"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="Set locked images from id" Command="{Binding SetLockedImageFromIdCommand}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource LockedImageFolderIcon}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Set unlocked images from id" Command="{Binding SetUnlockedImageFromIdCommand}">
<MenuItem.Icon>
<ContentPresenter ContentTemplate="{StaticResource UnlockedImageFolderIcon}"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</dataGrid:ThemedDataGrid.ContextMenu>
<dataGrid:ThemedDataGrid.Columns>
<DataGridTemplateColumn Header="Warnings" IsReadOnly="True" SortMemberPath="Warnings">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl ToolTip="{Binding Warnings}" Margin="0,0,5,0">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Warnings}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
<ContentPresenter Height="24" ContentTemplate="{StaticResource WarningIcon}"/>
</ContentControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True" Header="Name (Oasis id)" Binding="{Binding Challenge.Name.Id}" Visibility="Collapsed"/>
<DataGridTextColumn IsReadOnly="True" Header="Name (Oasis path)" Binding="{Binding Challenge.Name.Path}" Visibility="Collapsed"/>
<DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding Challenge.Name, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}"/>
<DataGridTextColumn IsReadOnly="True" Header="Objective (Oasis id)" Binding="{Binding Challenge.Objective.Id}" Visibility="Collapsed"/>
<DataGridTextColumn IsReadOnly="True" Header="Objective (Oasis path)" Binding="{Binding Challenge.Objective.Path}" Visibility="Collapsed"/>
<DataGridTextColumn IsReadOnly="True" Header="Objective" Binding="{Binding Challenge.Objective, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}" Visibility="Collapsed"/>
<DataGridTextColumn Header="Id" Binding="{Binding Id, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTemplateColumn Header="Type" SortMemberPath="Type">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Type}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Type, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemsSource>
<x:Array Type="{x:Type google:AchievementType}">
<google:AchievementType>Standard</google:AchievementType>
<google:AchievementType>Incremental</google:AchievementType>
</x:Array>
</ComboBox.ItemsSource>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Locked image" IsReadOnly="True" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button ToolTip="Select image" Command="{Binding DataContext.SetLockedImageCommand, ElementName=This}" CommandParameter="{Binding}" Padding="0">
<Grid>
<Image Name="AchievementLockedImage" behavior:ImageBehavior.SourceFile="{Binding LockedImagePath}" MaxHeight="{Binding DataContext.Game.Settings.ImageMaxHeight, ElementName=This}"/>
<TextBlock Text="..." VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Source, ElementName=AchievementLockedImage}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=Button}}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Unlocked image" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button ToolTip="Select image" Command="{Binding DataContext.SetUnlockedImageCommand, ElementName=This}" CommandParameter="{Binding}" Padding="0">
<Grid>
<Image Name="AchievementUnlockedImage" behavior:ImageBehavior.SourceFile="{Binding UnlockedImagePath}" MaxHeight="{Binding DataContext.Game.Settings.ImageMaxHeight, ElementName=This}"/>
<TextBlock Text="..." VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Source, ElementName=AchievementUnlockedImage}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=Button}}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Locked name (Oasis id)" SortMemberPath="LockedName.Id" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LockedName.Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding LockedName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Id" TextMemberPath="Id"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Locked name (Oasis path)" SortMemberPath="LockedName.Path" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LockedName.Path}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding LockedName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Path" TextMemberPath="Path"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Locked name" IsReadOnly="True" Binding="{Binding LockedName, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}" Visibility="Collapsed"/>
<DataGridTemplateColumn Header="Locked objective (Oasis id)" SortMemberPath="LockedObjective.Id" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LockedObjective.Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding LockedObjective, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Id" TextMemberPath="Id"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Locked objective (Oasis path)" SortMemberPath="LockedObjective.Path" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LockedObjective.Path}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding LockedObjective, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Path" TextMemberPath="Path"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Locked objective" IsReadOnly="True" Binding="{Binding LockedObjective, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}" Visibility="Collapsed"/>
<DataGridTemplateColumn Header="Unlocked name (Oasis id)" SortMemberPath="UnlockedName.Id" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding UnlockedName.Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding UnlockedName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Id" TextMemberPath="Id"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Unlocked name (Oasis path)" SortMemberPath="UnlockedName.Path" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding UnlockedName.Path}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding UnlockedName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Path" TextMemberPath="Path"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Unlocked name" IsReadOnly="True" Binding="{Binding UnlockedObjective, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}" Visibility="Collapsed"/>
<DataGridTemplateColumn Header="Unlocked objective (Oasis id)" SortMemberPath="UnlockedObjective.Id" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding UnlockedObjective.Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding UnlockedObjective, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Id" TextMemberPath="Id"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Unlocked objective (Oasis path)" SortMemberPath="UnlockedObjective.Path" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding UnlockedObjective.Path}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<editors:AutoCompleteBox SelectedItem="{Binding UnlockedObjective, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Path" TextMemberPath="Path"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Unlocked objective" IsReadOnly="True" Binding="{Binding UnlockedObjective, Converter={StaticResource LocalizedLineToMasterConverter}, FallbackValue=..., IsAsync=True}" Visibility="Collapsed"/>
</dataGrid:ThemedDataGrid.Columns>
</dataGrid:ThemedDataGrid>
</DockPanel>