Я добавил новое свойство в элемент управления ProgresBar, как бы то ни было, я не думаю, что делаю это правильно. Ниже находится индикатор прогресса в MainWindow.xaml, мне нужно иметь 2 значения с разрывом между ними.WPF Custom Property
<ProgressBar Style="{StaticResource CircularProgress}"
Value="50"
Extensions:CustomExtensions.Radius="140 0" />
Теперь вот мое пользовательское расширение, я сделал его строкой, так как между двумя числами существует разрыв.
public static readonly DependencyProperty RadiusProperty =
DependencyProperty.RegisterAttached("Radius", typeof(string), typeof(CustomExtensions), new PropertyMetadata(default(string)));
public static void SetRadius(UIElement element, string value)
{
element.SetValue(RadiusProperty, value);
}
public static string GetRadius(UIElement element)
{
return (string)element.GetValue(RadiusProperty);
}
Теперь здесь я использую это обычное свойство, которое не работает.
<PathFigure x:Name="pathFigure" StartPoint="{Binding Path=Radius, RelativeSource={RelativeSource TemplatedParent}}">
Действительно у меня 2 вопроса: 1. не кажется, значения этого следует применять к моему ControlTemplate, как если бы я удалить связывании ввести 140 0
себя он показывает ArcSegment, однако с его связывания не делает.
- Можно ли набрать
Radius
для нестандартного объекта безExtensions:CustomExtensions
?
Edit: При попытке связать текстовое поле для этого значения я получаю эту ошибку:
Exception thrown: 'System.Windows.Markup.XamlParseException' in PresentationFramework.dll
Additional information: 'Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception.' Line number '36' and line position '20'.
код:
<ProgressBar Style="{StaticResource CircularProgress}"
Value="{Binding Source={StaticResource runtimeVariables},Path=uploadProgress}"
Extensions:CustomExtensions.Radius="80"
Name="test"/>
<TextBlock Text="{Binding ElementName=test, Path=(Extensions:CustomExtensions.Radius)}"/>
Для меня связывания с элементом и только «Радиус», как путь работал (как я писал в своем ответе после изменения вложенное свойство), поэтому если ошибка не приходит от этого, я предполагаю, что это может произойти из предыдущей привязки (попробуйте без него -> давая жестко закодированное значение, как в вашем первом примере) – kirotab