Fix converters

This commit is contained in:
2026-03-18 21:11:43 +00:00
parent b35ecd61ea
commit 7eccb74b9b
6 changed files with 38 additions and 26 deletions

View File

@@ -2,29 +2,15 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="using:Prism.DryIoc"
xmlns:utu="using:Uno.Toolkit.UI"
xmlns:local="using:Marechai.App.Presentation.Converters">
<prism:PrismApplication.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- Load WinUI resources -->
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- Load Uno.UI.Toolkit resources -->
<ToolkitResources xmlns="using:Uno.Toolkit.UI" />
<utu:ToolkitResources />
</ResourceDictionary.MergedDictionaries>
<!-- Add resources here -->
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
<local:StringToVisibilityConverter x:Key="StringToVisibilityConverter" />
<local:ZeroToVisibilityConverter x:Key="ZeroToVisibilityConverter" />
<local:InvertBoolConverter x:Key="InvertBoolConverter" />
<local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<local:InvertBoolToVisibilityConverter x:Key="InvertBoolToVisibilityConverter" />
<local:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
<local:RolesListConverter x:Key="RolesListConverter" />
<local:LocalizeConverter x:Key="LocalizeConverter" />
</ResourceDictionary>
</prism:PrismApplication.Resources>

View File

@@ -29,6 +29,11 @@ public partial class App : PrismApplication
protected override UIElement CreateShell() => Container.Resolve<MainPage>();
protected override void ConfigureApp(IApplicationBuilder builder)
{
Resources.MergedDictionaries.Add(new AppResources());
}
protected override void ConfigureHost(IHostBuilder builder)
{
builder

View File

@@ -0,0 +1,16 @@
<ResourceDictionary x:Class="Marechai.App.AppResources"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Marechai.App.Presentation.Converters">
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
<local:StringToVisibilityConverter x:Key="StringToVisibilityConverter" />
<local:ZeroToVisibilityConverter x:Key="ZeroToVisibilityConverter" />
<local:InvertBoolConverter x:Key="InvertBoolConverter" />
<local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<local:InvertBoolToVisibilityConverter x:Key="InvertBoolToVisibilityConverter" />
<local:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
<local:RolesListConverter x:Key="RolesListConverter" />
<local:LocalizeConverter x:Key="Localize" />
</ResourceDictionary>

View File

@@ -0,0 +1,11 @@
using Microsoft.UI.Xaml;
namespace Marechai.App;
public partial class AppResources : ResourceDictionary
{
public AppResources()
{
InitializeComponent();
}
}

View File

@@ -71,8 +71,10 @@ public class BoolToVisibilityConverter : IValueConverter
/// </summary>
public class InvertBoolToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language) =>
value is true ? Visibility.Collapsed : Visibility.Visible;
public object Convert(object value, Type targetType, object parameter, string language)
{
return value is true ? Visibility.Collapsed : Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
value is Visibility.Collapsed;

View File

@@ -18,15 +18,11 @@ public sealed class LocalizeConverter : IValueConverter
public object Convert(object value, Type targetType, object parameter, string language)
{
System.Diagnostics.Debug.WriteLine($"LocalizeConverter.Convert: value={value?.GetType().Name} param={parameter} localizer={_localizer != null}");
if(parameter is not string key || _localizer is null)
return parameter?.ToString() ?? string.Empty;
LocalizedString result = _localizer[key];
System.Diagnostics.Debug.WriteLine($"LocalizeConverter: key='{key}' found={!result.ResourceNotFound} value='{result.Value}'");
return result.ResourceNotFound ? key : result.Value;
}
@@ -54,8 +50,6 @@ public static class Loc
private static void OnKeyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine($"Loc.OnKeyChanged: key='{e.NewValue}' localizer={_localizer != null} element={d.GetType().Name}");
if(e.NewValue is not string key || _localizer is null)
return;
@@ -68,8 +62,6 @@ public static class Loc
{
string value = TryGetValue(key);
System.Diagnostics.Debug.WriteLine($"Loc TextBlock key='{key}' value='{value}' localizer={_localizer != null}");
if(value != null)
textBlock.Text = value;