Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF自定义属性_C#_Wpf - Fatal编程技术网

C# WPF自定义属性

C# WPF自定义属性,c#,wpf,C#,Wpf,我已经向ProgresBar控件添加了一个新属性,但我认为我做得不对。下面是MainWindow.xaml中的progressbar,我需要有两个值,它们之间有一个间隙 <ProgressBar Style="{StaticResource CircularProgress}" Value="50" Extensions:CustomExtensions.Radius="140 0" /> 这里是我使用这个自定义属性

我已经向ProgresBar控件添加了一个新属性,但我认为我做得不对。下面是MainWindow.xaml中的progressbar,我需要有两个值,它们之间有一个间隙

<ProgressBar Style="{StaticResource CircularProgress}" 
                Value="50"
                Extensions:CustomExtensions.Radius="140 0" />
这里是我使用这个自定义属性的地方,它不起作用

<PathFigure x:Name="pathFigure" StartPoint="{Binding Path=Radius, RelativeSource={RelativeSource TemplatedParent}}">

我的原始答案是错误的,附加属性的类型定义正确,应该是
CustomExtensions
而不是
ProgressBar

ownerType—正在注册依赖项属性的所有者类型。

您必须将附加属性
typeof(ProgressBar)

以下是您可以轻松测试的方法

<ProgressBar x:Name="testProgressBar"
             Value="50"
             local:CustomExtensions.Radius="140 0" />
<TextBlock Text="{Binding ElementName=testProgressBar, Path=Radius}"/>

如果绑定到附加属性,则必须使用特殊语法(附加属性周围有括号)。此外,还应指定一个转换器将字符串转换为点

以下是一个例子:

<PathFigure x:Name="pathFigure" StartPoint="{Binding Path=(Extensions:CustomExtensions.Radius), RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource pointConverter}">

编辑: 我无法复制您的问题。 我使用以下代码,文本块具有正确的输出:

<ProgressBar Extensions:CustomExtensions.Radius="80" Name="test"/>
<TextBlock Text="{Binding ElementName=test, Path=(Extensions:CustomExtensions.Radius)}"/>

对于我来说,使用元素绑定时,路径只使用“Radius”(正如我在更改附加属性后的回答中所说的),因此如果错误不是来自此,我想可能是来自上一个绑定(尝试不使用它->像第一个示例中那样提供硬编码值)
<ProgressBar x:Name="testProgressBar"
             Value="50"
             local:CustomExtensions.Radius="140 0" />
<TextBlock Text="{Binding ElementName=testProgressBar, Path=Radius}"/>
<PathFigure x:Name="pathFigure" StartPoint="{Binding Path=(Extensions:CustomExtensions.Radius), RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource pointConverter}">
<ProgressBar Extensions:CustomExtensions.Radius="80" Name="test"/>
<TextBlock Text="{Binding ElementName=test, Path=(Extensions:CustomExtensions.Radius)}"/>