J'ai un fichier ResourceDictionary
et j'ai aussi deux classes à utiliser pour cela.
L'un d'entre eux est IValueConverter
et l'autre concerne le EventHandlers
relatif au contrôle.
Le nom de la classe est EventHandlers
défini comme valeur d'attribut x:Class
.
Je dois également définir Converters
en tant que seconde x:Class
.
Mais je ne peux pas le faire parce que le concepteur lance une erreur qui dit x:Class is set more than one time
.
Comment puis-je résoudre ce problème?Est-il possible de définir "x: Class" plus d'un dans un fichier ResourceDictionary?
Converters.cs
class Converters : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double pr = (double)value;
AltoProgressBar bar = parameter as AltoProgressBar;
return pr * bar.Width/bar.Maximum;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
EventHandlers.cs
public partial class EventHandlers
{
private void progressBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
ProgressBar progressBar = sender as ProgressBar;
var template = progressBar.Template;
//Find the Rectangle in the ControlTemplate
var layer = (Rectangle)(template.FindName("rect", progressBar));
//Calculate the increment amount depending maxValue and Width
double artis = progressBar.Value * progressBar.Width/progressBar.Maximum;
DoubleAnimation anim = new DoubleAnimation(toValue: artis, duration: TimeSpan.FromMilliseconds(100));
layer.BeginAnimation(Rectangle.WidthProperty, anim);
}
}
Styles.xaml
<ResourceDictionary xmlns:my="clr-namespace:AltoSS"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AltoSS.Converters"
<!--this doesn't make any sense-->
x:Class="AltoSS.EventHandlers">
<!--All styles in here-->
</ResourceDictionary>
Réglage x: Class sur ResourceDictionary n'a pas de sens. Cela voudrait dire que ResourceDictionary est dérivé de cette classe. Ce que vous voulez certainement, c'est une déclaration d'espace de nommage XML comme 'xmlns: altoss =" clr-namespace: AltoSS "' et puis instancier des choses comme des convertisseurs dans le dictionnaire comme ' ' (nom de classe mauvais btw) . Encore une fois, vous devriez commencer à lire la documentation. –
Clemens