나는 ResourceDictionary
파일을 가지고 있으며,이 파일을 사용할 두 가지 클래스가 있습니다.
그 중 하나는 IValueConverter
이고 다른 하나는 대조와 관련된 EventHandlers
입니다.
클래스 이름은 EventHandlers
이며 x:Class
속성 값으로 설정됩니다.
또한 Converters
을 두 번째 x:Class
으로 설정해야합니다.
디자이너가 x:Class is set more than one time
이라고하는 오류를 발생시키기 때문에이 작업을 수행 할 수 없습니다.
이 문제를 어떻게 해결할 수 있습니까?"x : Class"를 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>
설정 X 같은
하십시오 ResourceDictionary에에 클래스가 이해가되지 않습니다. ResourceDictionary는 해당 클래스에서 파생된다는 의미입니다. xmlns : altoss = "clr-namespace : AltoSS"와 같은 XML 네임 스페이스 선언을 원한다면 사전처럼' '(나쁜 클래스 이름 btw) . 다시 말하지만, 당신은 문서를 읽기 시작해야합니다. –
Clemens