У меня есть круг Progress-Bar
и простой ярлык внутри этого Circle
Как рассчитать процентное значение в XAML
<DesignInControl:CircularProgressBar x:Name="CircularProgressBar" HorizontalAlignment="Center" VerticalAlignment="Center"
Percentage="0" />
<Label Name="lblProgress" Content="0%" Foreground="White" Grid.Column="1" />
У меня есть 2 статическое поле:
- В моих
main form class
- totalFiles Как
class member
:общественный класс Данные { public static int numberOfFiles; }
Так что в этом Circle
и мой label
я хочу показать свой процент на стоимость: (Data.numberOfFiles\totalFiles) * 100
Так как я могу сделать это с помощью XAML
?
Редактировать
Добавить новый класс, держать свою форму переменной:
public class TotalPacketInList
{
private static int _value;
public static int Value
{
get { return _value; }
set { _value = value; }
}
}
Мой DoubleToPercentageConverter
класс:
public class DoubleToPercentageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return string.Format("{0%}", (int)(((double)Data.numberOfFiles/ TotalFilesInList.Value) * 100));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return 0;
}
}
<Label Name="lblCircleProgress" Content="{Binding ElementName=CircularProgressBar,Path=Percentage, Converter={StaticResource DoubleToPercentage}}"
Grid.Column="1" />
это будет рассчитать свой процент, но когда я пытаюсь запустить мой приложение у меня есть исключение в моем label
:
Первый шанс, исключение типа «System.Windows.Markup.XamlParseException» произошло в PresentationFramework.dll
Additional information: 'Set property 'System.Windows.Controls.ContentControl.Content' threw an exception.' Line number '481' and line position '45'.
Это потому, что, когда приложение запуска значение TotalPacketInList.Value
равно нулю, а мой расчет делится на ноль.
Мне нужны эти 2 метода в примере класса в разделе 2? или только реализовать свой собственный метод, как вы написали. –
Когда вы выполняете реализацию класса 'IValueConverter', вы будете обязаны добавить эти два метода. Это потому, что 'IValueConverter' является« интерфейсом », и вы должны реализовать все методы внутри этого интерфейса! Чтобы упростить процесс, после ввода ': IValueConverter' наведите указатель мыши на него, а визуальная студия предложит вам реализовать недостающие методы! ;) Вы можете оставить 'ConverBack' пустым. –
ОК я реализовал этот класс и после добавления в windows.resources У меня ошибка компиляции: Ошибка \t Тип «конвертер: DoubleToPercentageConverter» не найден. Убедитесь, что у вас нет ссылки на сборку и что все ссылочные сборки были созданы –